Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula _06
#define
#dene um componente til C que permite que o programador dar um nome a um valor constante antes de o programa ser compilado. O compilador ir substituir as referncias a essas constantes com o valor denido em tempo de compilao.
array
Um array um conjunto de variveis ! ! que so acessados !!com um nmero de ndice. Arrays na linguagem de programao C, em que Arduino baseado, pode ser complicado, mas usando matrizes simples relativamente simples.
array
int myInts[6];
Voc pode declarar um array sem inicializa-la como myInts.
array
int myPins[] = {2, 4, 8, 3, 6};
Em myPins ns declaramos um array sem escolher explicitamente um tamanho. O compilador conta os elementos e cria uma matriz de tamanho apropriado.
array
int mySensVals[6] = {2, 4, -8, 3, 2};
Finalmente, voc pode tanto inicializar e tamanho do seu array, como em mySensVals.
array
Acessando um Array
As matrizes so indexados a zero, isto , referindo-se a inicializao de matriz acima, o primeiro elemento da matriz est no ndice 0, da
int mySensVals[6] = {2, 4, -8, 3, 2}; mySensVals[0] = 2; mySensVals[1] = 4;
array
Tambm signica que, uma matriz com dez elementos, ndice nove o ltimo elemento. Assim:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] // conten 11 // myArray[10] // invlido e contm informaes random // (outro endereo de memria)
array
Tambm signica que, uma matriz com dez elementos, ndice nove o ltimo elemento. Assim:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] // conten 11 // myArray[10] // invlido e contm informaes random // (outro endereo de memria)
array
Para atribuir um valor a um array o matriz:
mySensVals[0] = 10;
array
Para atribuir um valor a um array o matriz:
mySensVals[0] = 10;
array
Arrays e loops As matrizes so frequentemente manipulada para dentro por loops, onde o contador de ciclos usada como o ndice para cada elemento da matriz. Por exemplo, para imprimir os elementos de uma matriz atravs da porta serial, voc poderia fazer algo parecido com isto:
for( int i = 0; i < 5; i = i + 1){ Serial.println(myPins[i]); }
for statement
for( valor inical do contador ; econdicao de repetio ; incremento do contador ){ ... }
for statement
O codigo entre as chaves vai ser repetido enquanto se cumpla a condio, e depois de cada repetio se incrementara o contador Podemos incrementar a quantidade que queramos x=x-3 x=x-5
for statement
O incremento pode ser de varias formas: x = x+1 X+=1 X++ No caso do decremento: x = x-1 X-=1 X--
materiais
Arduino Board (6) 220 ohm resistores (6) LEDs cabos protoboard
! ! ! !
esquematico
montagem
codigo
int tempo = 100; void setup() { for (int indiceDoPino = 2; indiceDoPino < 8; indiceDoPino++) pinMode(indiceDoPino, OUTPUT); } } void loop() { for (int indiceDoPino = 2; indiceDoPino < 8; indiceDoPino++) { digitalWrite(indiceDoPino, HIGH); delay(tempo); digitalWrite(indiceDoPino, LOW); } for (int indiceDoPino = 7; indiceDoPino >= 2; indiceDoPino--) { digitalWrite(indiceDoPino, HIGH); delay(tempo); digitalWrite(indiceDoPino, LOW); } } {
02:tocando melodias
tocar notas musicais duma partiutura em array
http://arduino.cc/en/Tutorial/Tone
materiais
! ! ! !
arduino altovalante 8 ohm o piezoeletrico resistor de 100 ohm os de conexao
esquematico
montagem
codigo
. . . #define #define #define #define #define #define #define #define #define #define . . . NOTE_G1 NOTE_GS1 NOTE_A1 NOTE_AS1 NOTE_B1 NOTE_C2 NOTE_CS2 NOTE_D2 NOTE_DS2 NOTE_E2 49 52 55 58 62 65 69 73 78 82
codigo
int melodia[] = { NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; int duaracaoNota[] = { 4, 8, 8, 4,4,4,4,4 }; void setup() { for (int notaAtual = 0; notaAtual < 8; notaAtual ++) { int duaracaoNota = 1000 / duaracaoNota[ notaAtual ]; tone( 8, melodia[ notaAtual ] , duaracaoNota ); int pausaEntreNotas = duaracaoNota * 1.30; delay( pausaEntreNotas ); noTone(8); } } void loop() { }
03:graca
lendo serial desde procesing
http://www.arduino.cc/playground/Interfacing/Processing
esquematico
montagem
codigo
void setup() { ! // initialize the serial communication: ! Serial.begin(9600); } void loop() { ! // send the value of analog input 0: ! Serial.println(analogRead(A0)); ! // wait a bit for the analog-to-digital converter ! // to stabilize after the last reading: ! delay(10); }
codigo
void setup() { ! // initialize the serial communication: ! Serial.begin(9600); } void loop() { ! // send the value of analog input 0: ! Serial.println(analogRead(A0)); ! // wait a bit for the analog-to-digital converter ! // to stabilize after the last reading: ! delay(10); }
codigo
// Graphing sketch !! import processing.serial.*; Serial myPort; ! ! ! ! int xPos = 1; ! ! ! ! ! void setup () { !size(400, 300); ! ! ! ! !println(Serial.list()); !myPort = new Serial(this, Serial.list()[0], 9600); !myPort.bufferUntil('\n'); !background(0); !} void draw () { ! } ! void serialEvent (Serial myPort) { !String inString = myPort.readStringUntil('\n'); ! !if (inString != null) { ! !inString = trim(inString); ! !float inByte = float(inString); !inByte = map(inByte, 0, 1023, 0, height); stroke(127,34,255); !line(xPos, height, xPos, height - inByte); ! ! !if (xPos >= width) { !xPos = 0; !background(0); !} !else { !xPos++; } } !}
04:suavizando
fazendo mas estavels os valores dos sensores
materiais
! ! ! !
esquematico
montagem
codigo
const int numeroLeituras = 10; int int int int leituras[ numeroLeituras ]; indice = 0; total = 0; promedio = 0; int pinoEntradaAnalogica = A0; void setup(){ Serial.begin(9600); for( int estaLeitura = 0 ; estaLeitura < numeroLeituras ; estaLeitura ++){ } leituras[ estaLeitura ] = 0;
void loop(){ total = total - leituras[ indice ]; readings[ indice ] = analogRead( pinoEntradaAnalogica ); total = total + leituras[ indice ]; indice = indice + 1; if( indice >= numeroLeituras ) { } indice = 0;
05:contando clickes
maquina de estados
http://arduino.cc/en/Tutorial/ButtonStateChange
materiais
! ! ! ! !
arduino botao momentaneo resitor de 10 KILO ohm placa prototipagem os de conexao
esquematico
montagem
codigo
const int buttonPin = 2; const int ledPin = 13; int buttonPushCounter = 0; int buttonState = 0; int lastButtonState = 0; void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState != lastButtonState) { if (buttonState == HIGH) { buttonPushCounter++; Serial.println("on"); Serial.print("number of button pushes: "); Serial.println(buttonPushCounter, DEC); } else { Serial.println("off"); } } lastButtonState = buttonState; if (buttonPushCounter % 4 == 0) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }