Você está na página 1de 46

Introduo ao Arduino

ESCOLA DE ARTES VISUAIS DO PARQUE LAGE

Ncleo de Arte e Tecnologia


julio lucio martin

Aula _06

O que vamos entender? programao

#define array tone() noTone() for statement

O que vamos entender? programao

#define array tone() noTone() for statement

#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.

#define constantName value

O que vamos entender? programao

#define array tone() noTone() for statement

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;

Para recuperar um valor de uma matriz:


int x = mySensVals[0];

array
Para atribuir um valor a um array o matriz:
mySensVals[0] = 10;

Para recuperar um valor de uma matriz:


int x = mySensVals[0];

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]); }

O que vamos entender? programao

#define array tone() noTone() for statement

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--

01:ligando leds con for


ligamos uma serie de leds com un loop for
http://arduino.cc/en/Tutorial/ForLoop

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
! ! ! !

arduino potenciometro os de conexao protoboard

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;

promedio = total / numeroLeituras; } Serial.println( promedio );

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); } }

Você também pode gostar