Programação Arduino

  • Published on
    13-Jul-2015

  • View
    1.164

  • Download
    3

Embed Size (px)

Transcript

<p>Programao Arduino</p> <p>Pgina | 1</p> <p>Sumrio:Estruturay yvoid setup ().............................................5 void loop ()...............................................5</p> <p>Operadores de bits y y y y y y y y&amp; (operador de bits AND)..............................22 | (operador de bits OR).................................22 ^ (operador de bits XOR)..............................22 ~ (operador de bits NOT)..............................24 &gt; (desvio direita).....................................25 &amp;=(de bits composto AND)............................26 |=(de bits composto OR)...............................26</p> <p>Estruturas de controle y y y y y y y y y yif............................................................6 if...else...................................................7 for..........................................................8 switch case.............................................9 while.....................................................10 do... while..............................................10 break.....................................................69 continue.................................................11 return.....................................................11 goto.......................................................12</p> <p>Operadores compostos y y y y y y++ (incrementar).........................................28 -- (decrementar)..........................................28 += (adio composta)..................................28 -= (subtrao composta)...............................28 *= (multiplicao composta)..........................28 /= (diviso composta)...................................28</p> <p>Elementos de sintaxe y y y y y y; (ponto e vrgula)...................................13 {} (chaves).............................................13 // (linha de comentrio)...........................15 /* */ (bloco de comentrio)......................15 #define..................................................16 #include.................................................17</p> <p>Operadores aritmticos y y y y y y= (igualdade).........................................18 + (adio)..............................................18 - (subtrao)..........................................18 * (multiplicao).....................................18 / (diviso)..............................................18 % (resto da diviso)...............................19</p> <p>Operadores de comparao y y y y y y== (igual a)...........................................20 != (diferente de).....................................20 &lt; (menor que).......................................20 &gt; (maior que)........................................20 = (maior ou igual a).............................20</p> <p>Operadores booleanos y y y&amp;&amp; (e)....................................................21 || (ou)....................................................21 ! (no)....................................................21</p> <p>Pgina | 2</p> <p>VariveisVariveis so expresses que voc pode usar em programas para armazenar valores como a leitura de um sensor em um pino analgico.</p> <p>ConstantesConstantes so valores particulares com significados especficos.</p> <p>y y y y</p> <p>HIGH | LOW...........................................29 INPUT | OUTPUT....................................29 true | false.............................................29 Constantes inteiras.................................31</p> <p>Tipos de dadosVariveis podem ser de vrios tipos:</p> <p>y y y y y y y y y y y y</p> <p>boolean..................................................32 char.......................................................32 byte.......................................................33 int..........................................................33 unsigned int............................................34 long.......................................................34 unsigned long.........................................35 float........................................................36 double....................................................37 string......................................................37 array.......................................................39 void........................................................40</p> <p>Converso y y y y ychar()....................................................41 byte()....................................................41 int().......................................................41 long()....................................................41 float()....................................................42</p> <p>Referncia yTabela ASCII..........................................42</p> <p>Pgina | 3</p> <p>FunesEntrada e sada digital</p> <p>y y y</p> <p>pinMode (pin, mode).....................................43 digitalWrite (pin, value).................................44 int digitalRead (pin).......................................45 Entrada e sada analgica</p> <p>Comunicao serial Usado para comunicao entre a placa Arduino e um computador ou outros dispositivos. Esta comunicao ocorre atravs dos conectores serial ou USB da placa Arduino e nos pinos digitais 0 (RX) e 1 (TX). Assim, se voc utilizar estas funes no poder utilizar os pinos 0 e 1 para entrada e sada digital.</p> <p>y y</p> <p>int analogRead (pin)......................................46 analogWrite (pin, value) PWM....................47</p> <p>Entrada e sada avanada</p> <p>y y</p> <p>shiftOut (dataPin, clockPin, bitOrder, value) .48 unsigned long pulseIn (pin, value) Tempo .49</p> <p>y y y y</p> <p>unsigned long millis()....................................50 unsigned long micros() delay(ms) delayMicroseconds( s) 2 Matemtica ..50 ..51 ..5</p> <p>y y y y y y</p> <p>Serial.begin (speed)......................................62 int Serial.available () int Serial.read () Serial.flush () 63 64 ..65</p> <p>Serial.print (data)..........................................65 Serial.println (data).......................................68</p> <p>y y y y y y y y</p> <p>min (x, y).....................................................54 max (x, y) .55 abs (x).........................................................56 constrain (x, a, b).........................................56 map (value, fromLow, fromHigh, toLow, toHigh) sq (x) 57 ..58 pow (base, exponent)...................................58 sqrt (x).........................................................58 Trigonometria</p> <p>y y y</p> <p>sin (rad).......................................................59 cos (rad)......................................................59 tan (rad)......................................................59 Nmeros aleatrios</p> <p>y y y</p> <p>randomSeed (seed) long random (min, max)</p> <p>.60 ..61</p> <p>long random (max).......................................61</p> <p>Pgina | 4</p> <p>setup()A funo setup() chamada quando um programa pomea a rodar. Use esta funo para inicializar as sua variveis, os modos dos pinos, declarar o uso de livrarias, etc. Esta funo ser executada apenas uma vez aps a placa Arduino ser ligada ou ressetada. Exemplo int buttonPin = 3; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT); } void loop() { // ... }</p> <p>loop()Aps criar uma fuo setup() que declara os valores iniciais, a funo loop() faz exatamente o que seu nome sugere, entra em looping (executa sempre o mesmo bloco de cdigo), permitindo ao seu programa fazer mudanas e responder. Use esta funo para controlar ativamente a placa Arduino. Exemplo int buttonPin = 3; // setup inicializa o serial e o pino do button (boto) void setup() { beginSerial(9600); pinMode(buttonPin, INPUT); } // loop checa o boto a cada vez, // e envia o serial se ele for pressionado void loop() { if (digitalRead(buttonPin) == HIGH) serialWrite('H'); else serialWrite('L'); delay(1000); }</p> <p>Pgina | 5</p> <p>if (condicional) e ==, !=, (operadores de comparao)if, que usado juntamente com um operador de comparao, verifica quando uma condio satisfeita, como por exemplo um input acima de um determinado valor. O formato para uma verificao if : if (algumaVariavel &gt; 50) { // faa alguma coisa } O programa checa se algumaVariavel (colocar acentos em nomes de variveis no uma boa idia) maior que 50. Se for, o programa realiza uma ao especfica. Colocado de outra maneira se a sentena que est dentro dos parntesis verdadeira o cdigo que est dentro das chaves roda; caso contrrio o programa salta este bloco de cdigo. As chaves podem ser omitidas aps uma sentena if se s houver uma nica linha de cdigo (definida pelo ponto e vrgula) que ser executado de modo condicional: if (x &gt; 120) digitalWrite(LEDpin, HIGH); if (x &gt; 120) digitalWrite(LEDpin, HIGH); if (x &gt; 120) {digitalWrite(LEDpin, HIGH);} // todos so corretos A sentena que est sendo verificada necessita o uso de pelo menos um dos operadores: Operadores de comparao: x == y (x igual a y) x != y (x no igual a y) x &lt; y (x menor que y) x &gt; y (x maior que y) x = y (x maior ou igual a y) Cuidado: Tenha precauo com o uso acidental de apenas um sinal de igual (e.g. if (x = 10) ). O sinal de igual simples um operador de designao e coloca o valor 10 na varivel x. Ao contrrio o sinal de igal duplo (e.g. if (x == 10) ), que um operador de comparao, verifica se x igual a 10 ou no. A ltima sentea s verdadeira se x for igual a 10, mas a anterior sempre ser veraddeira. Isto ocorre por que a linguagem C (na qual o Arduino baseado) atribui um valor sentena (x=10) do seguinte modo: 10 colocado na varivel x (lembre o sinal de igual simples um operador de designao), ento x agora contm 10. Ento o condicional 'if' atribui um valor a 10, que ser sempre verdadeiro (TRUE), desede que nmeros diferentes de zero so sempre equiparados verdadeiro. Consequentemente, if (x = 10) ser sempre verdadeiro, que no o que pretendemos quando usamos um 'if'. Adcionalmente o valor 10 ser guardado na varivel x que tambm no o que pretendemos. if tambm pode ser usado como parte de uma estrutura de controle ramificada atravs da construo if..else.</p> <p>Pgina | 6</p> <p>if / elseif/else permite um controle maior sobre o fluxo de cdigo do que a sentena if bsica, tornando possvel que mltiplos testes sejam agrupados. Por exemplo, uma entrada analgica poderia ser verificada e uma ao especfica seria tomada se o valor de input fosse menor que 500 e outra ao seria tomada se o input fosse 500 ou mais. O cdigo seria assim: if (pinFiveInput &lt; 500) { // ao A } else { // ao B } else pode preceder outro teste if , e assim mltiplos testes, mutuamente exclusivos, podem ser realizados ao mesmo tempo. Cada teste precede o prximo at que um teste com vavlor verdadeiro encontrado. Quando um teste com valor verdadeiro encontrado o seu bloco de cdigo associado execuatod e ento o programa salta para a sequencia aps todo o bloco if/else. Se a nenhum teste atribuido o valor verdadeiro o bloco que estiver no else sozinho executado, se houver algum. Note que um bloco else if pode ser usado com ou sem um bloco else final. Um nmero ilimitado destes ramos else if permitido. if (pinFiveInput &lt; 500) { // faa a coisa A } else if (pinFiveInput &gt;= 1000) { // faa a coisa B } else { // faa a coisa C } Outro modo de fazer testes de ramificaes mutuamente exclusivas atravs da sentena switch case.</p> <p>Pgina | 7</p> <p>sentena forDescrio A sentena for utilizada para repetir um bloco de cdigo delimitado por chaves. Um contador com incremento normalmente usado para controlar e finalizar o loop. A sentena for util para quanquer operao repetitiva, e frequentemente usada com arrays para operar em conjuntos de dados ou de pinos. H trs partes no cabealho do for: for (inicializao; condio; incremento) { //sentena(s); } A inicializao ocorre primeiro e apenas uma vez. Cada vez que o circuto executado a condio verificada; se for verdadeira o bloco de cdigo e o incremento so executados, e ento a condio testada novamente. Quando a condio se torna falsa o circuto termina. Exemplo // Aumentar o brilho de um LED usando um pino PWM int PWMpin = 10; // um LED em srie com um resisotr de 1k void setup() { // nenhum setup necessrio } void loop() { for (int i=0; i 40 &amp;&amp; x &lt; 120){ continue; } digitalWrite(PWMpin, x); delay(50); } // criar saltos de execuo</p> <p>returnFinaliza uma funo e retorna um valor, se necessrio. Sintaxe: return; return valor; // ambas formas so vlidas Parmetros valor: alguma varivel ou constante Exemplos: Uma funo para comparar o valor de um sensor com um limite int checkSensor(){ if (analogRead(0) &gt; 400) { return 1; else{ return 0; } } A palavra-chave return til para testar uma seo de cdigo sem ter que transformar em "comentrio" um grande e possivelmente defeituoso bloco de cdigo. void loop(){ // aqui, uma brilhante idia de programao return; // restante do bloco de cdigo no funcional // este cdigo nunca ser executado }</p> <p>Pgina | 11</p> <p>gotoTransfere o fluxo do programa para um outro ponto etiquetado Sintaxe label: goto etiqueta; // envia o fluxo do programa para etiqueta Dica O uso do goto desencorajado em programao C e inclusive alguns autores afirmam que o goto nunca realmente necessrio, mas usado com cautela pode simplificar alguns programas. A razo pela qual muitos programadores desaprovam seu uso que com o uso indiscriminado fcil de se criar um programa com um fluxo indefinido e muito difcil de ser depurado. No entanto, h casos em que o goto pode ser til e simplificar o cdigo. Uma destas situaes provocar uma sada de um grupo de loops aglutinados ou de blocos lgicos if com uma determinada condio.</p> <p>Exemplo for(byte r = 0; r &lt; 255; r++){ for(byte g = 255; g &gt; -1; g--){ for(byte b = 0; b &lt; 255; b++){ if (analogRead(0) &gt; 250){ goto bailout;} // more statements ... } } } bailout:</p> <p>Pgina | 12</p> <p>; ponto e vrgulaUsada para terminar uma sentena. Exemplo int a = 13; Dica Esquecer de finalizar uma linha com ponto e vrgula causa um erro de compilao. O texto sobre o erro pode ser bvio e se referir a um ponto e vrgula faltando, ou no. Se ocorrer um erro de compilao impenetrvel ou aparenetemente ilgico uma das primeiras coisas a checar um ponto e vrgula faltando na vizinhana, precedendo a linha indicada pelo compilador.</p> <p>{} ChavesChaves so uma parte essencial da linguagem de programao C. Elas so usadas em muitas construes diferentes, descritas abaixo, e isto pode algumas vezes ser confuso para iniciantes. Uma chave abrindo "{" deve sempre ser seguida por uma fechando "}". Frequentemente nos referimos a esta condio como equilibrio entre as chaves. A IDE (integrated development environment ou ambiente de desenvolvimento integrado) do Arduino inclui uma caracterstica prtica para checar o equilibrio das chaves. Apenas com o selecionar de uma chave ou clicar no ponto imediatamente posterior faz com que sua companheira lgica seja destacada. No presente momento esta caracterstica um pouco defeituosa e a IDE frequentemente encontrar (incorretamente) uma chave em um bloco de texto que tenha sido comentado. Programadores principiantes e programadores vindos das linguagens C e do BASIC frequentemente consideram o uso das chaves confuso ou desalentador. Afinal as mesmas chaves substituem a sentena RETURN em uma subrotina(funo), a...</p>