Arquivo da Categoria: Sem categoria

Modules e Packages no Eclipse

Um módulo é um ficheiro .py enquanto que uma package é uma pasta que contem um módulo __init__.py, tal como é explicado aqui.

Variáveis, funções e classes definidas num módulo xpto.py podem ser acedidos de outros módulos se forem importados:
import xpto

Esses elementos podem ser usados fazendo: xpto.elemento

Para se usar diretamente um elemento temos antes que importar assim:
from xpto import elemento

PyDev no Ubuntu

Comecei por verificar num terminal que o Python já está instalado (versão 2.7.6):

helio@Thor:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)

Eclipse

Comecei por instalar o Eclipse IDE for C/C++ Developers Linux 64 bit (eclipse-cpp-luna-SR1-linux-gtk-x86_64.tar.gz).

Uma vez descarregado o ficheiro .gz seguir este tutorial.

Depois no Eclipse Marketplace, instalei os plugins:

  • PyDev – Python IDE for Eclipse 3.8.0
  • HTML Editor (WTP) Luna

Não esquecer de ir a Window>Preferences e em PyDev>Interpreters>Python Interpreter clicar no botão New… e escolher o executável do Python que está em /usr/bin/python (como se pode confirmar pelo comando which python).

Ir também a Window>Open Perpective>Other… e escolher PyDev.

Eclipse como root

Ás vezes é necessário executar aplicações no Eclipse como root (por exemplo no acesso ao porto série). Nesse caso há que fazer o que é indicado aqui.

Virtualenv

Instalar as ferramentas de desenvolvimento do Python:
sudo apt-get install python-dev
sudo apt-get install python-setuptools

Instalar o pip:
sudo easy_install pip

Instalar o virtualenv:
sudo pip install virtualenv

Criar um ambiente virtual “venv” dentro da pasta python do workspace do eclipse:
cd ~/workspace/python
virtualenv venv

Segue-se a ativação:
source venv/bin/activate

Instalar o Flask:
pip install flask
pip install flask-socketio
pip install pyserial

No fim, desativar o virtualenv:
deactivate

Servidor

Aqui.

Interrupções no Raspberry Pi

http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio

http://www.thebox.myzen.co.uk/Raspberry/Magic_Wand.html

http://makezine.com/projects/tutorial-raspberry-pi-gpio-pins-and-python/

http://blog.oscarliang.net/use-gpio-pins-on-raspberry-pi/

http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/

 

https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code

class Adafruit_I2C(object):

def __init__(self, address, busnum=-1, debug=False):
# By default, the correct I2C bus is auto-detected using /proc/cpuinfo
# Alternatively, you can hard-code the bus version below:
# self.bus = smbus.SMBus(0); # Force I2C0 (early 256MB Pi’s)
# self.bus = smbus.SMBus(1); # Force I2C1 (512MB Pi’s)
def write8(self, reg, value):
“Writes an 8-bit value to the specified register/address”
def write16(self, reg, value):
“Writes a 16-bit value to the specified register/address pair”
def writeRaw8(self, value):
“Writes an 8-bit value on the bus”
def writeList(self, reg, list):
“Writes an array of bytes using I2C format”
def readList(self, reg, length):
“Read a list of bytes from the I2C device”
def readU8(self, reg):
“Read an unsigned byte from the I2C device”
def readS8(self, reg):
“Reads a signed byte from the I2C device”
def readU16(self, reg, little_endian=True):
“Reads an unsigned 16-bit value from the I2C device”
def readS16(self, reg, little_endian=True):
“Reads a signed 16-bit value from the I2C device”

http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc

self.bus = smbus.SMBus(busnum if busnum >= 0 else Adafruit_I2C.getPiI2CBusNumber())
self.bus.write_byte_data(self.address, reg, value)
self.bus.write_word_data(self.address, reg, value)
self.bus.write_byte(self.address, value)
self.bus.write_i2c_block_data(self.address, reg, list)
results = self.bus.read_i2c_block_data(self.address, reg, length)
result = self.bus.read_byte_data(self.address, reg)
result = self.bus.read_word_data(self.address,reg)

Wave player WT588D-16p

Trata-se dum módulo baseado no chip WT588D da companhia Waytronic Electronics Co Ltd, e na memória 25Q32BVSIG (Flash SPI de 32Mb, i.e. 4 MBytes).

WT588D

 

Este módulo pode ser controlado de várias formas, teclas, sinais digitais (1 ou 3), etc. O problema é contudo a alteração do conteúdo da memória Flash onde residem os ficheiros de som. Existe um programa para o efeito mas parece necessitar dum programador próprio, embora presumo que também se possa fazer por nós acedendo diretamente à memória que tem interface SPI colocando o ficheiro .bin gerado pelo software (embora me dê um erro quando da sua criação).

Instalar o Arduino no Ubuntu

Caso o JAVA não esteja ainda instalado, é preciso fazê-lo pois o Arduino IDE corre em JAVA.

Instalação do Java:

  • sudo add-apt-repository ppa:webupd8team/java
  • sudo apt-get update
  • sudo apt-get install oracle-java8-installer
  • java -version
  • sudo apt-get install oracle-java8-set-default

Descarregar o Arduino, sendo que optei pela versão de 64bits (v1.0.5)

Descompactar o ficheiro tgz descarregado.

Executar em modo administrador (sudo ./arduino) caso contrário a ligação à placa não é devidamente estabelecida.

Como criar um icon que faça a chamada em modo administrador?

sudo add-apt-repository ppa:noobslab/apps
sudo apt-get update
sudo apt-get install open-as-administrator

nautilus -q

10 pecados mortais cometidos nos laboratórios de Eletrónica 1

  1. Não usar os acoplamentos AC/DC adequados no osciloscópio
  2. Não garantir que os sinais gerados tem o valor médio requerido (em geral zero, algo que o gerador nem sempre garante)
  3. Confundir a amplitude (valor de pico) com valor pico-a-pico
  4. Esquecer que em certas breadboards os barramentos estão interrompidos a meio
  5. Ler cegamente os valores fornecidos pelo osciloscópio em lugar de os estimar com base nas escalas e número de divisões
  6. Usar o modo autoset
  7. Visualizar um número excessivo de períodos do sinal no osciloscópio
  8. Não ler o guião com atenção
  9. Não ligar a fonte de tensão
  10. Julgar que os valores dos componentes não apresentam tolerâncias
  11. Ligar mal os potenciometros
  12. Enfiar mais do que 4/5mm de fio dentro da Breadboard
  13. Deixar demasiado cobre visível nos fios fora da Breadboard