arduinopro
DESCRIPTION
Apresentação realizada no 2º Connecting Knowledge, mostrando tópicos mais avançados sobre Arduino, como Comunicação Serial, Banco de Dados e Funções úteis.TRANSCRIPT
Introduo a um novo produto
Arduino Alm do Setup e Loop
Ricardo da Silva Ogliari
Agenda
Introduo
Loop e Setup
Outras funes
A grande estrela: a porta serial
Demo 1: Vocs j esto vendo
Demo 2: Arduino e Java Swing
Demo 3: Arduino e GCM
Eu
Ricardo da Silva Ogliari
Instrutor Globalcode
Things Hacker Team
Twing Studio
StillRocker
Revistas:Mobile Magazine
Revista Esprito Livre
iMasters
Sites: globalcoders, itweb, mobilidadetudo e THT
Introduo
O arduino muito mais que loop e setup;
A porta serial a porta pro mundo;
Bibliotecas j conhecidas;
Outras funes
random: nmeros randmicos;
constraint: constraint (0, 1, 8) retorna 1;
map: escala valores map(10, 0, 1023, 0, 2046);
Trabalhando com bits:
int x = 0xbc 10001100 / bitRead(x, 0);
int x = 2 0010 bitWrite(x, 0, 1) vira 3
Tons de msica:
Tone(4, 500, 500) porta, frequncia (megahertz), durao
Interrupo
Arduino no tem Sistema Operacional;
nica tarefa;
Interrupes:
dentro do setup:
attachInterrupt(0, goFast, FALLING);
0 ou 1: a porta ser a 2 ou 3;
funo a ser chamada;
CHANGE, RISING ou FALLING: mudana, para cima ou para baixo;
AGORAAAAA!!!!!!
ARDUINO
PC
USB paraSerial
Microprocessador
UART
Buffer128KB
SKETCH
Serial no lado Arduino
Serial.println
Serial.begin(baudrate)
Serial.available
Serial.read
Funo serialEvent, chamada entre intervalos das chamadas ao loop
Serial no lado Java
RXTX - JavaComm
http://rxtx.qbang.org/wiki/index.php/Main_Page
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
Serial no lado Java
CommPortIdentifier portId = null;Enumeration ports = CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {CommPortIdentifier c = (CommPortIdentifier) ports.nextElement();if (c.getName().equals(COM37)) portId = c;}
serialPort = (SerialPort)portId.open(getClass().getName(),TIME_OUT);
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));output = serialPort.getOutputStream();
serialPort.addEventListener(this);serialPort.notifyOnDataAvailable(true);
Serial no lado Java
public synchronized void serialEvent(SerialPortEvent oEvent) {if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {try {String inputLine = input.readLine();} catch (Exception e) {}}}
public static synchronized void writeData(String data) {try {output.write(data.getBytes());} catch (Exception e) {}}
Banco de Dados no Arduino
Flash Memory: o HD do Arduino. Memria no voltil.
aonde vo os programas
ATMega8 8kb de Flash
ATMega168 16kb de Flash
ATMega328 32kb de Flash
Banco de Dados no Arduino
Memria RAM: No ATMega328 so 2K; Variveis;
A diretiva PROGMEM
#include
Possui a funo pgm_read_word;
Tipos de dados especiais: prog_char, prog_int32_t
Banco de Dados no Arduino
EEPROM: Apesar do nome no apenas leitura;
Adiciona ou l um byte por vez;
#include
EEPROM.read();
EEPROM.write(, byte);
DEMOS
DEMOSSSSSSSSSSSSSSSSSSSSSSS!!!!!!!
PERGUNTAS?
@MOBILIDADETUDO
THINGSHACKERTEAM.BLOGSPOT.COM
@THINGSHACKERTM