<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8557153329162421800</id><updated>2026-06-26T01:14:44.914-07:00</updated><title type='text'>TecnoMelque</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tecnomelque.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-4757629640821174973</id><published>2017-10-19T07:01:00.001-07:00</published><updated>2017-10-19T07:08:10.209-07:00</updated><title type='text'>Detecção de gestos com  APDS-9960 </title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/JtdllDqn6tU/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/JtdllDqn6tU?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;Objetivo&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Identificar gestos mostrando a direção por setas em um display&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;&lt;b&gt;O que foi usado&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;gt;&amp;gt; APDS-9960&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O APDS-9960 é um sensor de gestos, cor RGB, luminosidade e proximidade. Projetado nativamente para embarcar celulares.&lt;br /&gt;
Nesse experimento usando um módulo com o sensor testamos a detecção de gestos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Mf8_3dsJkKMJJO9hSNCP813iT2GSODkuXScpZRwuylyv98Y21d2Xl0AiNqRkwAKZp1zc7BeEWEBA5PeWa8V_6_0Q9suL62NjYlmSqc-WXSuucg5Y3ubf-MtS_huOb5fhyphenhyphenP1mbwbz7M8/s1600/IMG_20171017_214126.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1508&quot; data-original-width=&quot;1568&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Mf8_3dsJkKMJJO9hSNCP813iT2GSODkuXScpZRwuylyv98Y21d2Xl0AiNqRkwAKZp1zc7BeEWEBA5PeWa8V_6_0Q9suL62NjYlmSqc-WXSuucg5Y3ubf-MtS_huOb5fhyphenhyphenP1mbwbz7M8/s200/IMG_20171017_214126.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDbIyX09-_QBykMr5n2LcArqMqnem0ViODYRJ5mdxmGR2i39Fs1VTzXz7UEMDcHlwEOKsqW1JSMVpi0u2_wXcPJXOWDtAQQtlu8CEmj6SGDtS_E5h0prbSeL4FymAtspKI1chdj4cEVi4/s1600/IMG_20171017_214152.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;1172&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDbIyX09-_QBykMr5n2LcArqMqnem0ViODYRJ5mdxmGR2i39Fs1VTzXz7UEMDcHlwEOKsqW1JSMVpi0u2_wXcPJXOWDtAQQtlu8CEmj6SGDtS_E5h0prbSeL4FymAtspKI1chdj4cEVi4/s200/IMG_20171017_214152.jpg&quot; width=&quot;146&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Tensão de alimentação: 3.3VCC;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Interface de comunicação: I2C;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Endereço I2C: 0x39;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Resolução até 16 bits;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Função de interrupção programável com limite superior e inferior;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Alta sensibilidade pode ser usado atrás de vidro escurecido;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Desempenho em baixa luminosidade na detecção de proximidade, 0,01 lux;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; LED IR integrado e driver de LED síncrono;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Faixa de detecção: 10 a 20cm;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Dimensões aproximadas: 1,4cm x 1,4cm;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Pinagem:&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; VIN (+3.3)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; GND (-)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; SCL (relógio I2C)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; SDA (dados I2C)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; INT (interrupção)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;gt;&amp;gt; Módulo matriz de leds com MAX7219&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT25F9CLU-NPDc_Ek79QykX9USkln_w221oQtsGaEKo4dgNiqdmvX-wMOe1PSgk3Cj39lARb_2WP_RRiH8lX7BnWL4byyxiZG5KVL-LHFQ2YRjgjR6hfgpstQ5q6bGTepa1ZZrKGslF24/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1115&quot; data-original-width=&quot;1600&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT25F9CLU-NPDc_Ek79QykX9USkln_w221oQtsGaEKo4dgNiqdmvX-wMOe1PSgk3Cj39lARb_2WP_RRiH8lX7BnWL4byyxiZG5KVL-LHFQ2YRjgjR6hfgpstQ5q6bGTepa1ZZrKGslF24/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt;&amp;gt; Pinagem:&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; VIN (+5)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; GND (-)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; DIN (dada)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; CS (load)&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;gt; CLK (clock)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;gt;&amp;gt; Arduino UNO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwIkBboibHi6RafLyGBtn2XDZ4YMJFhGAf8dj5Fwa2oIRrwGTwbYAeXWKkBZkLSAzLCsA-AQzQR1x61HWsrQ2m7RFvRiZ_MI__UXqd5LGnqIDSLyPg-ZKiPpEyKPRYSNRTqkyMySlC31w/s1600/ArduinoUno_r2_front450px.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;315&quot; data-original-width=&quot;450&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwIkBboibHi6RafLyGBtn2XDZ4YMJFhGAf8dj5Fwa2oIRrwGTwbYAeXWKkBZkLSAzLCsA-AQzQR1x61HWsrQ2m7RFvRiZ_MI__UXqd5LGnqIDSLyPg-ZKiPpEyKPRYSNRTqkyMySlC31w/s200/ArduinoUno_r2_front450px.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;font-family: arial, helvetica, sans-serif; font-size: x-large;&quot;&gt;Montagem&lt;/b&gt;&lt;br /&gt;
&lt;b style=&quot;font-family: arial, helvetica, sans-serif; font-size: x-large;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXzS2Uwo-wBeQnhIdae60WHrbWFu8WHupaN-4UORyVg685_bWwJFXMt1TZ1rxgzxWduoj6x8vSCBE5aVREYphEIgWUyehwgt-OXQ2gQkfDf83yqVBHHRSNjsDjOJjJ12jIpkKP8GAynE8/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;981&quot; data-original-width=&quot;1469&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXzS2Uwo-wBeQnhIdae60WHrbWFu8WHupaN-4UORyVg685_bWwJFXMt1TZ1rxgzxWduoj6x8vSCBE5aVREYphEIgWUyehwgt-OXQ2gQkfDf83yqVBHHRSNjsDjOJjJ12jIpkKP8GAynE8/s400/Imagem1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b style=&quot;font-family: arial, helvetica, sans-serif; font-size: x-large;&quot;&gt;Programa&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O código utiliza a biblioteca da sparkfun para o APDS-9960 e foi baseado em um de seus exemplos.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://github.com/sparkfun/SparkFun_APDS-9960_Sensor_Arduino_Library/tree/V_1.4.2&quot; target=&quot;_blank&quot;&gt;LINK PARA BIBLIOTECA&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como o ID do sensor que usamos ( 0xA8 ) é diferente do da sparkfun ( 0xAB). Para funcionamento correto foi necessário alterar esse dado no arquivo da biblioteca:&amp;nbsp;&lt;b&gt;SparkFun_APDS9960.h&lt;/b&gt; na &lt;b&gt;linha 34&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Vem assim:&lt;br /&gt;
#define APDS9960_ID_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xAB&lt;br /&gt;
&lt;br /&gt;
Alterar para:&lt;br /&gt;
#define APDS9960_ID_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;0xA8&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Esse arquivo fica dentro da pasta &quot;scr&quot; que estará dentre da pasta da biblioteca : \SparkFun_APDS9960\src&lt;br /&gt;
&lt;br /&gt;
Pode ser aberto com editor de texto como o WorPad ou NotPad++. Este ultimo é próprio para isso. Para salvar é necessário abrir como administrador.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;gt;&amp;gt; Códgo&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;fixed&amp;quot; , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;
// apds9960//////////////////////////////////
#include &amp;lt;Wire.h&amp;gt;
#include &amp;lt;SparkFun_APDS9960.h&amp;gt;

// Pins
#define APDS9960_INT    2 // Needs to be an interrupt pin

// Constants

// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

/////////////////////////////////////////////

int load = 10; // pino do arduino ligado a pino LOAD (CS)
int clock = 11; // pino do arduino ligado a pino CLOCK(CLK)
int dataIn = 12;  // pino do arduino ligado a pino DATA (DIN)

int *aux;

// figuras
int up[8] =   {8,12,14,255,255,14,12,8};
int down[8] = {16,48,112,255,255,112,48,16};
int left[8] = {24,60,126,255,24,24,24,24};
int rigth[8] = {24,24,24,24,255,126,60,24};
int near[8] = {129,66,36,24,24,36,66,129};
int far[8] = {0,0,0,24,24,0,0,0};


int e = 0;

// define  registradores de comando do max7219
// os registradores de digitos vão de 0xx1 a 0xx7

byte max7219_reg_decodeMode  = 0x09;
byte max7219_reg_intensity   = 0x0a;
byte max7219_reg_scanLimit   = 0x0b;
byte max7219_reg_shutdown    = 0x0c;
byte max7219_reg_displayTest = 0x0f;




void setup () {

  pinMode(dataIn, OUTPUT);
  pinMode(clock,  OUTPUT);
  pinMode(load,   OUTPUT);
  pinMode(APDS9960_INT, INPUT);

  Serial.begin(9600);
  digitalWrite(13, HIGH);  

//initiation of the max 7219
  maxSingle(max7219_reg_scanLimit, 0x07);      
  maxSingle(max7219_reg_decodeMode, 0x00);  // using an led matrix (not digits)
  maxSingle(max7219_reg_shutdown, 0x01);    // not in shutdown mode
  maxSingle(max7219_reg_displayTest, 0x00); // no display test
   
  for (e=1; e&amp;lt;=8; e++) { // limpa registradores
    maxSingle(e,0);
  }
  
// the first 0x0f is the value you can set
// range: 0x00 to 0x0f
  maxSingle(max7219_reg_intensity, 0x0f &amp;amp; 0x0f);    
  
  // Initialize interrupt service routine
  attachInterrupt(0, interruptRoutine, FALLING);
  // Initialize APDS-9960 (configure I2C and initial values)
   apds.init();
  // Start running the APDS-9960 gesture sensor engine
  apds.enableGestureSensor(true);
   
} 

void loop () {

   // havendo interrupção o flag vai a 1. A função handleGesture() é chamada
    if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}

void interruptRoutine() {
  isr_flag = 1;
}

// le do sensor que foi o gesto e
// chama a função escolheseta()
// passando o numero correspondente

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        escolhe_seta(1);
        break;
      case DIR_DOWN:
        escolhe_seta(2);
        break;
      case DIR_LEFT:
        escolhe_seta(3);
        break;
      case DIR_RIGHT:
        escolhe_seta(4);
        break;
      case DIR_NEAR:
        escolhe_seta(5);
        break;
      case DIR_FAR:
        escolhe_seta(6);
        break;
     // default:
      //  Serial.println(&quot;NONE&quot;);
    }
  }
}


void escolhe_seta(int num)
{
  // escolhe a figura
 switch(num){
 
 case 1:
 aux = up;
 break;
 
 case 2:
 aux = down;
 break;

 case 3:
 aux = left;
 break;

 case 4:
 aux = rigth;
 break;

 case 5:
 aux = near;
 break;

 case 6:
 aux = far;
 break;

 
}
  // mostra no display
    for(int i=1;i&amp;lt;=8;i++)
   {
    maxSingle(i,aux[i-1]);                  
   }
 
  
}

void maxSingle( byte reg, byte col) 
{    
  digitalWrite(load, LOW);       // begin
  
  shiftOut(dataIn, clock, MSBFIRST, reg); //endereço de registrador
  shiftOut(dataIn, clock, MSBFIRST, col); // byte a ser gravado
     
  digitalWrite(load, LOW);    
  digitalWrite(load,HIGH); 
}
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4757629640821174973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4757629640821174973'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2017/10/sensor-de-gestos-apds-9960.html' title='Detecção de gestos com  APDS-9960 '/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/JtdllDqn6tU/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-2640952953997893198</id><published>2017-04-24T14:21:00.001-07:00</published><updated>2017-04-24T15:08:35.383-07:00</updated><title type='text'>Modulo relé 16CH via WIFI com esp8266-01</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/jeqlfmsBGqI/default.jpg?sqp=CNTV-ccF&amp;amp;rs=AOn4CLASD80Mnumm1iYEWtnrRi4W5yoKMw&quot; frameborder=&quot;0&quot; height=&quot;274&quot; src=&quot;https://www.youtube.com/embed/jeqlfmsBGqI?feature=player_embedded&quot; width=&quot;330&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;Objetivo&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Controlar, via rede wifi, um módulo relé 16ch&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;&lt;b&gt;O que foi usado&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Módulo wifi ESP8266 ESP-01 Com o firmware ESP Easy gravado&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuXRmhyNkfuuGqjceb3B0GXo5eJ4doHl4eTRzDu7YgXhGYZ3f8SSN-LpqRrFrsSkrLW9F58BiYM6AIQm4yAXWe-K2M2t-SdR4bdCo7MCvisB_wgRuA2gLU24E_8v9LsJQhvLgjV3OHWgk/s1600/esp8266-e1423566695109.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuXRmhyNkfuuGqjceb3B0GXo5eJ4doHl4eTRzDu7YgXhGYZ3f8SSN-LpqRrFrsSkrLW9F58BiYM6AIQm4yAXWe-K2M2t-SdR4bdCo7MCvisB_wgRuA2gLU24E_8v9LsJQhvLgjV3OHWgk/s320/esp8266-e1423566695109.jpg&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para saber como gravar o firmware ESP Easy no ESP8266 acesse:&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;a href=&quot;https://tecnomelque.blogspot.com.br/2016/12/gravacao-e-teste-do-firmware-esp-easy.html&quot; target=&quot;_blank&quot;&gt;Gravação e teste do firmware ESP easy no esp8266-01&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Modulo relé 16 canais&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;O Módulo relé 16 canais&lt;/b&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GiGcGnOHbhoIX9RY9V2K2OBVRJJ2pIiylJY6Lm1clZkNKShGhKjbN9DHSx3Kx-7w-W0e86YdZcVptxGgMGPL-9QKmbrVQS0qZMV99guP-jBP-U_JA_fJLoDXsbZIuyK4T-2e2wJqlZk/s1600/rele16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GiGcGnOHbhoIX9RY9V2K2OBVRJJ2pIiylJY6Lm1clZkNKShGhKjbN9DHSx3Kx-7w-W0e86YdZcVptxGgMGPL-9QKmbrVQS0qZMV99guP-jBP-U_JA_fJLoDXsbZIuyK4T-2e2wJqlZk/s400/rele16.jpg&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiysszuIRnYOEfyRi1GS1WcdNs7jJnSA4kPA1TMCCkF0VJ5vIlSM6qx8wkpAauIyNaIGIQv23kDidqpu9BwyN6fE7HcH_QD4GRId8pNS4I-BYo7q0i8pxVrWIFECz1UCBJ-OeqSN5_aNEE/s1600/rele16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Tensão de alimentação: 12V; &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt;
 Possui regulador de tensão integrado 5V o que permite alimentar o 
arduino e demais dispositivos através dos pinos de saída 5V e GND;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Sinal de acionamento, lógico: Nível baixo GND&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;. &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O
 ideal para uso com o PCA9685 seria o com acionamento em nível alto já 
que o módulo parece inicializar com todos os pinos em nível baixo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Modulo I2C PCA9685&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEiKlQQqF8ShsAH-Y0b1xI-Tf240_jL-T-UcjcCRMRwz_uDrR_tN2l0c1dH-yN23fazY8h3U6vIeb_ztjnFiZ3w1P_l09dnpdgdFdQLSA8ra39cjbTI_m4G-5R0MpaBrqB33CIQcIX9E/s1600/Slide3.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEiKlQQqF8ShsAH-Y0b1xI-Tf240_jL-T-UcjcCRMRwz_uDrR_tN2l0c1dH-yN23fazY8h3U6vIeb_ztjnFiZ3w1P_l09dnpdgdFdQLSA8ra39cjbTI_m4G-5R0MpaBrqB33CIQcIX9E/s400/Slide3.PNG&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;A postagem:&lt;/span&gt;&lt;a href=&quot;http://tecnomelque.blogspot.com.br/2016/11/controlador-pwm-16-canais-teste-com.html&quot; target=&quot;_blank&quot;&gt; Controlador PWM 16 CH PCA9685 com servos e Led&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;trás mais detalhes sobre esse módulo&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Este modulo tem saída em PWM mas usaremos o valor máximo para HIGH ou 1 e o mínimo para estado LOW ou 0.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;&lt;b&gt;Montagem&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhFoEPeHakw6XsPg2rJxobAgsj_q12dh5OOwrOERg12VKqxiswsZAFQuf06TWve1baoCV5JtG0tEmxud3vsj3KWTAAG8RsMOctz6bOpN5XemBT207uu245vci-PiYfJCNegXVxTlNvOLo/s1600/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhFoEPeHakw6XsPg2rJxobAgsj_q12dh5OOwrOERg12VKqxiswsZAFQuf06TWve1baoCV5JtG0tEmxud3vsj3KWTAAG8RsMOctz6bOpN5XemBT207uu245vci-PiYfJCNegXVxTlNvOLo/s400/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;Configurando o ESP-01&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Com o firmware ESP Easy já gravado no ESP8266 é necessário fazer apenas uma simples configuração - Definir quais os pinos que serão usados para comunicação I2C.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O ESP-01 disponibiliza apenas 2 pinos de IO. Temos que configura-los como Clock e Data da comunicação I2C.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;GPIO 0&amp;nbsp; &amp;gt;&amp;gt; SCL &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;GPIO 2&amp;nbsp; &amp;gt;&amp;gt; SDA &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Com o seu ESP8266 ligado e conectado a rede acesse sua página de configuração através do IP como mostrado na postagem:&lt;a href=&quot;https://tecnomelque.blogspot.com.br/2016/12/gravacao-e-teste-do-firmware-esp-easy.html&quot; target=&quot;_blank&quot;&gt;Gravação e teste do firmware ESP easy no esp8266-01&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4pmX0x4ahKvK9KmF1zVZkWgX88LeCr__dPAlDsqdkHbAQAQHAakXmkAqHYnyNX5X_IU1xIFIXTiHDrsHHj5II3S6WCU10Snj6ZNYX2YqgVHwqSl_vqNoJtRB0n5z8ftLYvw1hr_1DEBg/s1600/Imagem2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4pmX0x4ahKvK9KmF1zVZkWgX88LeCr__dPAlDsqdkHbAQAQHAakXmkAqHYnyNX5X_IU1xIFIXTiHDrsHHj5II3S6WCU10Snj6ZNYX2YqgVHwqSl_vqNoJtRB0n5z8ftLYvw1hr_1DEBg/s400/Imagem2.png&quot; width=&quot;276&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;nbsp;Na guia hardware altere&amp;nbsp; SDA para GPIO-2 e SCL para GPIO-0. Em seguida clique em Submit&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCbs8JeAtZ7D_4ZZdSVX0ovGgAqPzj4Oo67Yzp7l00qKQBXlq4ZvKuE4_BcUkSXnmnVd2nD6lTzGByPrUx_UruQ2Nk30jEhTh5tVyS1McdweMXHb91cdbyeR8YKfSLZWitPCZyMpws8WM/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCbs8JeAtZ7D_4ZZdSVX0ovGgAqPzj4Oo67Yzp7l00qKQBXlq4ZvKuE4_BcUkSXnmnVd2nD6lTzGByPrUx_UruQ2Nk30jEhTh5tVyS1McdweMXHb91cdbyeR8YKfSLZWitPCZyMpws8WM/s400/Imagem1.png&quot; width=&quot;350&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;Testes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Após a montagem e a configuração.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para acionar um dos 16 relés fazemos da seguinte forma - Considerando os dispositivos conectados à mesma rede - (para controle via internet será necessário IP fixo ou serviços de ddns dinâmico como os oferecidos pelo NoIP, além das configurações de direcionamento de porta em seu roteador):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;

&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Através de um computador ou celular conectado na mesma rede passos o comando da seguinte forma:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;http:// &lt;span style=&quot;color: red;&quot;&gt;ESP IP address&lt;/span&gt;/control?cmd=pcapwm,&lt;span style=&quot;color: red;&quot;&gt;pin&lt;/span&gt;,&lt;span style=&quot;color: red;&quot;&gt;Level&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;Substituindo:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;ESP IP address &lt;/span&gt;&lt;/b&gt;&amp;nbsp;Pelo IP do ESP8266 em sua rede;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;pin&lt;/span&gt;&lt;/b&gt; Pelo Pino do PCA9685 0 a 15 &amp;nbsp;(que no nosso caso corresponde a um dos reles)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Level&lt;/span&gt; &lt;/b&gt;Pelo valor de pwm.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O PCA9685 é um módulo com saída em PWM por isso valor pode ser de 0 a 4095 (4096 níveis possíveis) Isso e interessante para controle de led, servo motores, etc. Nesse projeto utilizamos apenas os extremos para acionar o relé: &quot;0&quot; para nível baixo e &quot;4095&quot; para nível alto.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;Exemplo:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Considerando o IP: 192.168.0.5&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para acionar o relé número 15 do módulo enviamos: &amp;nbsp;http://192.168.0.5/control?cmd=pcapwm,15,4095&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para desligar o relé número 15 do modulo enviamos: &amp;nbsp;http://192.168.0.5/control?cmd=pcapwm,15,0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;No vídeo utilizei um aplicativo criado no APPInventor que faz basicamente o descrito acima.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2640952953997893198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2640952953997893198'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2017/04/modulo-rele-16ch-via-wifi-com-esp8266-01.html' title='Modulo relé 16CH via WIFI com esp8266-01'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/jeqlfmsBGqI/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-8826755351231728357</id><published>2016-12-10T14:35:00.002-08:00</published><updated>2016-12-10T14:52:36.882-08:00</updated><title type='text'>Gravação e teste do firmware ESP easy no esp8266-01</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/UcgE8NX3szA/default.jpg?sqp=COiDssIF&amp;amp;rs=AOn4CLD1RZypA13dSk2HIrg-rHgYCYoPcQ&quot; frameborder=&quot;0&quot; height=&quot;399&quot; src=&quot;https://www.youtube.com/embed/UcgE8NX3szA?feature=player_embedded&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;O ESP8266 é um módulo wifi que tem revolucionado por seu baixo custo e versatilidade. Ele traz em uma placa muito pequena um CI contendo os elementos necessários a comunicação wifi e um microcontrolador de 32bist além de um CI de memória.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Existem alguns modelos deste módulo. Todos os modelos utilizam o mesmo circuito integrado principal. Sendo diferentes basicamente em número de pinos disponibilizados na placa e no tamanho de memória e alguns outros componentes em certos modelos.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;O módulo mais básico é o ESP-01. Ele sai de fábrica com um firmware que possibilita controla-lo via comandos AT através de sua interface serial RS232, nível de tensão TTL 3,3V.&amp;nbsp; Nessa configuração ele funciona como um modulo wifi para um dispositivo externo, como o Arduino, por exemplo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;A &lt;a href=&quot;http://www.nodemcu.com/index_en.html#fr_54745c8bd775ef4b99000011&quot; target=&quot;_blank&quot;&gt;nodemcu&lt;/a&gt; disponibiliza outros firmwares que possibilitam a programação do microcontrolado interno permitindo que o módulo funcione de forma independente de microcontrolador externo. Essa&amp;nbsp; programação pode ser feita pela linguagem LUA através de interface adequada ou pela interface de programação do Arduino, adicionando-se para isso os módulos convenientes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Uma terceira possibilidade, a que usamos aqui, é instalar no ESP8266 a firmware EASY&amp;nbsp; ESP da &lt;a href=&quot;http://letscontrolit.com/&quot;&gt;letscontrolit.com&lt;/a&gt;. Esse firmware permite controlara vários dispositivos com comandos via web por um navegador de internet ou aplicativo. Quando necessário as configurações&amp;nbsp; adicionais ao modulo poder ser feitas também via browser acessando através do endereço IP a página de configuração do modulo. Isso facilita muito o uso do ESP8266. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Montando o circuito para gravação&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;O primeiro passo caso não tenha um adaptador pronto para ligar o ESP8266 ao computador é montar o circuito abaixo ou circuito semelhante:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP1AXuJSAPXA5HYVb_JShUmtXytjnf0v6ouMf5I5_6gy3Ex7-_VMi_calTTc67XmsVb3LDQ5i3ajL_ebAUx2sOdI7rR2M7SPN4PfybvjJqnXCXpQe17xHja_qVQy_xFxWLD6odBu-R4LQ/s1600/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP1AXuJSAPXA5HYVb_JShUmtXytjnf0v6ouMf5I5_6gy3Ex7-_VMi_calTTc67XmsVb3LDQ5i3ajL_ebAUx2sOdI7rR2M7SPN4PfybvjJqnXCXpQe17xHja_qVQy_xFxWLD6odBu-R4LQ/s400/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Observe:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;a. A alimentação e comunicação deve ser em 3,3V&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;b. O pino GPIO-0 deve ser ligado ao GND para que seja possível gravar o firmware&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Gravando o firmware no ESP8266-ESP01&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;O tutorial oficial para instalação do firmware no ESP pode ser visto no seguinte &lt;a href=&quot;http://www.letscontrolit.com/wiki/index.php/Tutorial_ESPEasy_Firmware_Upload&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;1 -&amp;nbsp; Fazer o download do arquivo zip contendo o firmware e ferramentas.&amp;nbsp; Descompactar. &lt;a href=&quot;https://sourceforge.net/projects/espeasy/?source=typ_redirect&quot; target=&quot;_blank&quot;&gt;Link&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;2 - Clique duas vezes em &quot;flash.cmd&quot;. Uma janela de comandos deve começar com três perguntas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht27gU_xDL5jOmkBcIbGT5LcYGN6UJ4qVNHb4x9v75uEJd9ZLKKg9jAAetFH4N9df8TLWD_eBhNRNYF6eOKDTQHJQT8s9rlNRas25zAsGPOlKmXX2yXrrWZ96cISF_XaDoXfQ38Qv1TQ0/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht27gU_xDL5jOmkBcIbGT5LcYGN6UJ4qVNHb4x9v75uEJd9ZLKKg9jAAetFH4N9df8TLWD_eBhNRNYF6eOKDTQHJQT8s9rlNRas25zAsGPOlKmXX2yXrrWZ96cISF_XaDoXfQ38Qv1TQ0/s320/Imagem1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;3 - Digite o número da porta COM em que está conectado o ESP8266 via modulo 
FTDI. Por exemplo se estiver conectado na porta COM9 digite 9.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLmWROKJyIXYjVnolY8cD_SMYJEt1U2zjFbIBfTjXpjZKhODPDWzlNl4ON_Ro2G6cm93g8BvLHe1DZiS-uBV008kBOR7Y_okn1X-ikY_193Fz8Ep2zf2VSdjTWTAf8xaxO0omw3q3DZZI/s1600/pergunta1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;292&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLmWROKJyIXYjVnolY8cD_SMYJEt1U2zjFbIBfTjXpjZKhODPDWzlNl4ON_Ro2G6cm93g8BvLHe1DZiS-uBV008kBOR7Y_okn1X-ikY_193Fz8Ep2zf2VSdjTWTAf8xaxO0omw3q3DZZI/s400/pergunta1.png&quot; width=&quot;400&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;4 - Digite o tamanho da memória flash de seu ESP8266, 512, 1024 ou 4096 (depende do modelo) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZbCirSW5KycIijAF1AvKadXepbgV97cyf3oGDqThq8ks62MIru7QadTKzqsFI68pqjyJQnLy5USH7XWZthZWAh2CD6i-VGYloAc4cFkwneaxcFRBR_bIz-a2WVuRaPK5Z7UpPSmZffdk/s1600/pergunta3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZbCirSW5KycIijAF1AvKadXepbgV97cyf3oGDqThq8ks62MIru7QadTKzqsFI68pqjyJQnLy5USH7XWZthZWAh2CD6i-VGYloAc4cFkwneaxcFRBR_bIz-a2WVuRaPK5Z7UpPSmZffdk/s400/pergunta3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;5 - Selecione a versão de compilação. 120 ou mais recente.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfH86pWVoPrX6Dms_w1DhER2hwPbhQcTgz4hHQyGYKhIbPMSiaaTM52fBnA1Ve1EclsBA6p9hZvC2NTRIEIB85d5aSPetE0ldqLUnxhUOvuOcRl7XDKrbY40ZwbXfMTDotiFCcwYKwPcE/s1600/pergunta5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfH86pWVoPrX6Dms_w1DhER2hwPbhQcTgz4hHQyGYKhIbPMSiaaTM52fBnA1Ve1EclsBA6p9hZvC2NTRIEIB85d5aSPetE0ldqLUnxhUOvuOcRl7XDKrbY40ZwbXfMTDotiFCcwYKwPcE/s400/pergunta5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;6 - A gravação será iniciada e terminará, aproximadamente como na seguinte tela.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBK7W3sxaKg1yg1rswl8OAGNRk4Zdle0Q_9XdU0rCh9CZV3uAIhZrEBexbTJne9xN36KvQNimAsL3L5pBDHeCYNzqfl92fgOhgnH4iQV8V-Fk7AaI4w2V4__p3G9mR6rnUvGY1wIc-ZzA/s1600/pergunta6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBK7W3sxaKg1yg1rswl8OAGNRk4Zdle0Q_9XdU0rCh9CZV3uAIhZrEBexbTJne9xN36KvQNimAsL3L5pBDHeCYNzqfl92fgOhgnH4iQV8V-Fk7AaI4w2V4__p3G9mR6rnUvGY1wIc-ZzA/s400/pergunta6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;7 -&amp;nbsp; Após concluir a instalação do firmware pressionar o reset do ESP ou desligue e religue&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Configuração preliminar &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Assim que é ligado após a instalação do firmware do EasyESP o ESP8266&amp;nbsp; criará uma rede wifi que pode ser acessada com um celular, por exemplo, para configuração inicial. Isso permite que ele seja acessado para configurar sua conexão com a rede wifi em que deverá se conectar.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;1 - Acessar a rede criada pelo ESP&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;REDE:&amp;nbsp; ESP_0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;SENHA: configesp&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;2 - Após conectar nessa rede será possível ajustar as configurações para que o ESP8266 possa se conectar em sua rede wifi.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para isso acesse com qualquer navegador de internet o IP: 192.168.4.1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Será aberta a seguinte página: &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjINPeKvXL-F3Lz3lPTqsmU36zWb3YfPwcOwKin8AuQ8FheOz8ZDrAscaDmbDAlaoVtdVhzlNGhzfm9E0vxGTJ7rRGm-ZnW9HRgJ2ZfXEexTG92jm_6ks4GEY-owmi5zNggybLGi9oNCBM/s1600/tela+config.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjINPeKvXL-F3Lz3lPTqsmU36zWb3YfPwcOwKin8AuQ8FheOz8ZDrAscaDmbDAlaoVtdVhzlNGhzfm9E0vxGTJ7rRGm-ZnW9HRgJ2ZfXEexTG92jm_6ks4GEY-owmi5zNggybLGi9oNCBM/s320/tela+config.png&quot; width=&quot;299&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Nela selecione sua rede wifi, digite a senha e pressione connect&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Será exibido uma contagem regressiva e logo em seguida, dando tudo certo, será mostrado o IP do ESP8266 em sua rede wifi.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Com esse IP é possível acessar a página de configuração do ESP e também enviar comandos.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Teste com LEDs&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Após conectar o ESP8266 a rede via wifi podemos fazer o seguinte teste.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Ligar um LED no GPIO-0 e GPIO-2. Conforme figura abaixo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKFd7sIhrgYYMwv80A_M7ChQX3R8iwgETZbL8IrUE943vuDqG7W6O62LAUDAmE8fHeqofDww8FU0GiuzljjVDI63J9FvMWWvqCpHinjlZeiJzhkNPQaXH6bqctX9udQeZe0vMWondwEts/s1600/Apresenta%25C3%25A7%25C3%25A3o2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKFd7sIhrgYYMwv80A_M7ChQX3R8iwgETZbL8IrUE943vuDqG7W6O62LAUDAmE8fHeqofDww8FU0GiuzljjVDI63J9FvMWWvqCpHinjlZeiJzhkNPQaXH6bqctX9udQeZe0vMWondwEts/s400/Apresenta%25C3%25A7%25C3%25A3o2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para esse teste não será necessária nenhuma configuração adicional no ESP.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Controlar o estado dos GPIO do ESP com o EASY ESP pe bastante simples.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Utilizei um computador conectado a mesma rede em que está conectado o ESP8266&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para alterar o estado via browser enviamos o seguinte:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;esp address=&quot;&quot; ip=&quot;&quot;&gt;&lt;pin&gt;http://ESP_IP_address/control?cmd=GPIO,pin,state &lt;/pin&gt;&lt;/esp&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Onde:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;esp address=&quot;&quot; ip=&quot;&quot;&gt;&lt;b&gt;ESP_IP_address &lt;/b&gt;: IP do ESP8266 em sua rede&lt;/esp&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;pin&gt;&lt;b&gt;pin &lt;/b&gt;: Pino correspondente ao GPIO&lt;/pin&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;estado&gt;&lt;b&gt;state&lt;/b&gt;: Estado desejado para o GPIO. 0 para nivel baixo e 1 para nivel alto.&lt;/estado&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Por exemplo:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;No meu caso o IP do esp8266 é 192.168.0.102. Então:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para acender o led no GPIO-2 envio:&amp;nbsp; http://192.168.0.102/control?cmd=GPIO,2,1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para apagar o led no GPIO-2 envio:&amp;nbsp; http://192.168.0.102/control?cmd=GPIO,2,0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para apagar o led no GPIO-0 envio:&amp;nbsp; http://192.168.0.102/control?cmd=GPIO,0,1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Para apagar o led no GPIO-0 envio:&amp;nbsp;&amp;nbsp; http://192.168.0.102/control?cmd=GPIO,0,0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8826755351231728357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8826755351231728357'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/12/gravacao-e-teste-do-firmware-esp-easy.html' title='Gravação e teste do firmware ESP easy no esp8266-01'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/UcgE8NX3szA/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-7100013203458233232</id><published>2016-11-09T15:24:00.000-08:00</published><updated>2016-11-09T15:26:25.443-08:00</updated><title type='text'>Controlando módulo relé 16 canais via I2C com Arduino</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/MVbJj4XGX4U/default.jpg?sqp=CMTSjsEF&amp;amp;rs=AOn4CLC7F1yaSU4he4J-wgOmlTzfkkSwrA&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/MVbJj4XGX4U?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Objetivo&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Controlar um módulo relé 16 canais com arduino através de interface em display de cristal liquido 16x2 via modulo I2C PCA9685&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Cada canal do relé pode ser usado para controlar carga em até 240V / 10A. Como lâmpadas, pequenos motores e outros eletro-eletrônicos.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O que foi utilizado&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Módulo relé 16 canais&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Arduino UNO R3&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;LCD shield&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Modulo I2C PCA9685 (nativamente um modulo para controle de servomotores)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Fonte 12V&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;i&gt;Jumpers &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;O Módulo relé 16 canais&lt;/b&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GiGcGnOHbhoIX9RY9V2K2OBVRJJ2pIiylJY6Lm1clZkNKShGhKjbN9DHSx3Kx-7w-W0e86YdZcVptxGgMGPL-9QKmbrVQS0qZMV99guP-jBP-U_JA_fJLoDXsbZIuyK4T-2e2wJqlZk/s1600/rele16.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3GiGcGnOHbhoIX9RY9V2K2OBVRJJ2pIiylJY6Lm1clZkNKShGhKjbN9DHSx3Kx-7w-W0e86YdZcVptxGgMGPL-9QKmbrVQS0qZMV99guP-jBP-U_JA_fJLoDXsbZIuyK4T-2e2wJqlZk/s400/rele16.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiysszuIRnYOEfyRi1GS1WcdNs7jJnSA4kPA1TMCCkF0VJ5vIlSM6qx8wkpAauIyNaIGIQv23kDidqpu9BwyN6fE7HcH_QD4GRId8pNS4I-BYo7q0i8pxVrWIFECz1UCBJ-OeqSN5_aNEE/s1600/rele16.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Tensão de alimentação: 12V; &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Possui regulador de tensão integrado 5V o que permite alimentar o arduino e demais dispositivos através dos pinos de saída 5V e GND;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Sinal de acionamento, lógico: Nível baixo GND&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;. &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O ideal para uso com o PCA9685 seria o com acionamento em nível alto já que o módulo parece inicializar com todos os pinos em nível baixo.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O LCD shield&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8z1kGpDlxgbTFBHi-s6-fA2RQQRFLoNG6MOcmJRgTfR6999LDM4mZRLKX_roLGnc3-jwj3QZqFkNBe4a4ToEQ_9zAZO0-JFFHT2RyAW4Z-VptSp1A499iUM2hhIEC4Ym3QunkwZWN91g/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;310&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8z1kGpDlxgbTFBHi-s6-fA2RQQRFLoNG6MOcmJRgTfR6999LDM4mZRLKX_roLGnc3-jwj3QZqFkNBe4a4ToEQ_9zAZO0-JFFHT2RyAW4Z-VptSp1A499iUM2hhIEC4Ym3QunkwZWN91g/s400/3.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Display LCD16x2 (pinos D4 a D10 do arduino)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;nbsp;&amp;gt;&amp;gt; 5 botões, ligados a apenas um pino analógico do arduino, o pino A0, via divisor de tensão.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;quando um botão é pressionado seu valor correspondente (entre 0 e 1023) pode ser lido com a função analogRead(A0); &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;. Dessa forma é possível identificar qual botão foi pressionado.&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O Modulo I2C PCA9685&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEiKlQQqF8ShsAH-Y0b1xI-Tf240_jL-T-UcjcCRMRwz_uDrR_tN2l0c1dH-yN23fazY8h3U6vIeb_ztjnFiZ3w1P_l09dnpdgdFdQLSA8ra39cjbTI_m4G-5R0MpaBrqB33CIQcIX9E/s1600/Slide3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEiKlQQqF8ShsAH-Y0b1xI-Tf240_jL-T-UcjcCRMRwz_uDrR_tN2l0c1dH-yN23fazY8h3U6vIeb_ztjnFiZ3w1P_l09dnpdgdFdQLSA8ra39cjbTI_m4G-5R0MpaBrqB33CIQcIX9E/s400/Slide3.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;A postagem:&lt;/span&gt;&lt;a href=&quot;http://tecnomelque.blogspot.com.br/2016/11/controlador-pwm-16-canais-teste-com.html&quot;&gt; Controlador PWM 16 CH PCA9685 com servos e Led&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;trás mais detalhes sobre esse módulo&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Montagem&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm4lJv9QqTddTXHT6ixF6jaGo7kIKI-aD53R3gAMxbN0674DdjC55_ilRcQn1t2cvtyP5HK9AQ1WQDsrVXuth29yhQ7dQyKye8L4_nLSTi20Wo_m5Ot8i0_N_AtezPg0QW4P7T2GpZzt4/s1600/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm4lJv9QqTddTXHT6ixF6jaGo7kIKI-aD53R3gAMxbN0674DdjC55_ilRcQn1t2cvtyP5HK9AQ1WQDsrVXuth29yhQ7dQyKye8L4_nLSTi20Wo_m5Ot8i0_N_AtezPg0QW4P7T2GpZzt4/s400/Apresenta%25C3%25A7%25C3%25A3o1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Como funciona&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O canal desejado é selecionado via botões UP e DOWN.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O display mostrará o estado do canal selecionado: ON ou OFF&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para alterar o estado do canal pressionar o botão SELECT &amp;nbsp;e em seguida LEFT ou RIGHT para alternar entre ON e OFF. Após selecionar o estado desejado pressionar novamente SELECT para validar a alteração.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Prog&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;ra&lt;/span&gt;ma&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O PCA9685 é um modulo PWM, saída analógica então para usá-lo com o modulo relé trabalhamos nos extremos da saída PWM: 0V para nível baixo (aciona relé) e 4095 para nível alto (desliga relé). Se estiver usando um módulo relé com acionamento por nível alto será necessário inverter no programa onde tem 4095 para 0 e vice versa&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt; no local indicado.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;É necessário adicionar a biblioteca&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;:&lt;/span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library&quot; target=&quot;_blank&quot;&gt;Adafruit&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;_&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;PWMServoDriver&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;
&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #272822; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;Wire.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;Adafruit_PWMServoDriver.h&amp;gt;&lt;/span&gt;

&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;LiquidCrystal.h&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;LiquidCrystal&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;//LiquidCrystal lcd(RS,E, D4, D5, D6, D7);&lt;/span&gt;

&lt;span style=&quot;color: #75715e;&quot;&gt;// called this way, it uses the default address 0x40&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;Adafruit_PWMServoDriver&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Adafruit_PWMServoDriver(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x40);&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;canal_state[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;};&lt;/span&gt;


&lt;span style=&quot;color: #75715e;&quot;&gt;// BOTOES&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;DLY_BT&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Right;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Up;&lt;/span&gt;           
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Down;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Left;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Select;&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;


&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;setup&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  
  &lt;span style=&quot;color: #75715e;&quot;&gt;//delay(1000);&lt;/span&gt;
  
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.begin(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm.begin();&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm.setPWMFreq(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1600&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// This is the maximum PWM frequency&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;a=&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;a&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;a++)&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm.setPin(a,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4095&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;// pino, valor, inverte &lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Modulo rele 16CH&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;

  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Canal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;


&lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;loop&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  

  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Zera_bts();&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Le_bts();&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// ler botoes&lt;/span&gt;

  &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Up&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;--;&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Canal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Down&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;++;&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Canal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
  
&lt;span style=&quot;color: #75715e;&quot;&gt;//  if(Down == true &amp;amp;&amp;amp; cnt_canal == 16}&lt;/span&gt;
   
  
  
 &lt;span style=&quot;color: #75715e;&quot;&gt;// Zera_bts();&lt;/span&gt;
&lt;span style=&quot;color: #75715e;&quot;&gt;//  Le_bts();  // ler botoes&lt;/span&gt;
 
  &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(Select&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;SetCanal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
           &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
           &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
           
               &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Zera_bts();&lt;/span&gt;
               &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Le_bts();&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// ler botoes&lt;/span&gt;
                        
              &lt;span style=&quot;color: #66d9ef;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(Select&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;){&lt;/span&gt;
                
               &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Zera_bts();&lt;/span&gt;
               &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Le_bts();&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// ler botoes&lt;/span&gt;
                
              &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(Right&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Left&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
             &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;!&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;canal_state[cnt_canal];&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;SetCanal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
              &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
              &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;           
      
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
              &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt; 
              
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;                &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt; 
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.setCursor(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Canal &quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
                 &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(canal_state[cnt_canal]&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm.setPin(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;4095&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// trocar para 0 se o modulo&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;                             &lt;span style=&quot;color: #75715e;&quot;&gt;// acionar em nivel alto&lt;/span&gt;
                 &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd.print(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;: ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pwm.setPin(cnt_canal&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;  &lt;span style=&quot;color: #75715e;&quot;&gt;// trocar para 4095 se o modulo&lt;/span&gt;
                 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;                          &lt;span style=&quot;color: #75715e;&quot;&gt;// acionar em nivel alto&lt;/span&gt;
    &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #75715e;&quot;&gt;///FUNÇÃO LÊ BOTÕES/////////////////////////////&lt;/span&gt;
&lt;span style=&quot;color: #75715e;&quot;&gt;// {50, 200, 400, 600, 800 };&lt;/span&gt;
 &lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;Le_bts&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt;
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Right&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
             &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Up&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;        
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Down&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;   
           &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Left&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;    
         &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Select&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
    
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;analogRead(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;   &lt;span style=&quot;color: #75715e;&quot;&gt;//le o pino analogico onde esta os botoes&lt;/span&gt;
   
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;(input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Right&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;50&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;150&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Up&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;200&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Down&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;380&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;450&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Left&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
   &lt;span style=&quot;color: #66d9ef;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;550&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;input&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;700&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;)&lt;/span&gt;
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Select&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
  

   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
    &lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;(DLY_BT);&lt;/span&gt;
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;


&lt;span style=&quot;color: #75715e;&quot;&gt;///FUNÇÃO ZERA BOTÕES/////////////////////////////&lt;/span&gt;
 
 &lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt;  &lt;span style=&quot;color: #a6e22e;&quot;&gt;Zera_bts&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt;                                                                                                       
   &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
    
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Right&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Up&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;        
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Down&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;    
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Left&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;    
 &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Select&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #66d9ef;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;    
    
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7100013203458233232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7100013203458233232'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/11/controlando-modulo-rele-16-canais-via.html' title='Controlando módulo relé 16 canais via I2C com Arduino'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/MVbJj4XGX4U/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-6244400203837977530</id><published>2016-11-08T07:04:00.000-08:00</published><updated>2016-11-08T07:46:00.084-08:00</updated><title type='text'>Controlador PWM 16 CH PCA9685 com servos e Led</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/xVr7cDCHubw/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/xVr7cDCHubw?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Teste com servos&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/y4ybXpWSp1c/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/y4ybXpWSp1c?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Teste com leds&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Foram utilizados os exemplo que acompanham a biblioteca da adafruit para arduino nos testes descritos aqui. Em breve 
postarei dois outros exemplos de utilização deste módulo, um deles com o 
ESP8266.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Com esse módulo baseado no PCA9685 é possível adicionar 16 portas de&amp;nbsp; PWM de 12 bits ao arduino, ao esp8266 ou a outro microcontrolador com I2C. Pode controlar, por exemplo, 16 servomotores, 16 leds inclusive a intensidade do brilho, entre outras aplicações.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;Características do módulo&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt; 16 canais;&lt;br /&gt;&amp;gt;&amp;gt; Resolução do PWM: 12bits 4096 valores possíveis;&lt;br /&gt;&amp;gt;&amp;gt; Frequências: 40 - 1000Hz;&lt;br /&gt;&amp;gt;&amp;gt; Tensão de alimentação 2,3 V to 5,5 V;&lt;br /&gt;&amp;gt;&amp;gt; Corrente máxima saída (pinos de PWM)&amp;nbsp; 25mA;&lt;br /&gt;&amp;gt;&amp;gt; Tensão lógica: 3 a 5V;&lt;br /&gt;&amp;gt;&amp;gt; Tensão para servos (V+) máxima:&amp;nbsp; 6V;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://cdn-learn.adafruit.com/downloads/pdf/16-channel-pwm-servo-driver.pdf&quot; target=&quot;_blank&quot;&gt;Datasheet do módulo adafruit&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;a href=&quot;https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Datasheet do CI&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-4413-edac-973a-98dc2cbac6d9&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Pinagem&lt;/b&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR1jmMNmAhNwKyy8VtXmuFTW5pKLcuPfHge7D_ZgljL1y8b1plW-Y2NCMq0Ap-5oZH-fNcFxq1Qheg0SaZ7RFvdmmntkhHAvVjD1vX-EyWHjJYgzy1rIYZaDSRK8D8pr2FNZmqlMxThcE/s1600/Slide3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR1jmMNmAhNwKyy8VtXmuFTW5pKLcuPfHge7D_ZgljL1y8b1plW-Y2NCMq0Ap-5oZH-fNcFxq1Qheg0SaZ7RFvdmmntkhHAvVjD1vX-EyWHjJYgzy1rIYZaDSRK8D8pr2FNZmqlMxThcE/s400/Slide3.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Endereço I2C&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;A comunicação I2C utiliza apenas dois fios, um para clock (SCL) e outro para dada (SDA). Nela é possível, teoricamente conectar até 128 elementos em um mesmo barramento. Cada elemento é definido por um endereço. Esse endereço é definido via hardware. O fabricante seguindo as normas do padrão I2C determina o endereço ou faixa de endereços quando o dispositivo é projetado.&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Neste módulo:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; 64 endereços I2C possíveis;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Dois endereços reservados:&amp;nbsp; LED All Call address (1110 000) and Software Reset (0000 0110); &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;gt;&amp;gt; Permite ligar, teoricamente, até 62 módulos no mesmo barramento I2C. Endereço padrão 0x40 (em hexadecimal) , B1000000 (em binário)&lt;br /&gt;&lt;br /&gt;O endereço I2C pode ser alterado através dos jumpers A0 a A5 na placa. Eles estão todos abertos por padrão.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWOj0UOXaypi3mYtrFgA6H9SPgyHGeeKGubjrbOG7fFaZNW6NPsVWWmxJ9gHXHrFn7KdnLlJm3DKChyphenhyphen8yxMWSZqiZ7_0iFaybyFtgXIg3vAZKqNYorj6ub1Akd1DF8DnHGrYLbpvuVoxU/s1600/Imagem1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;139&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWOj0UOXaypi3mYtrFgA6H9SPgyHGeeKGubjrbOG7fFaZNW6NPsVWWmxJ9gHXHrFn7KdnLlJm3DKChyphenhyphen8yxMWSZqiZ7_0iFaybyFtgXIg3vAZKqNYorj6ub1Akd1DF8DnHGrYLbpvuVoxU/s200/Imagem1.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para mudar o endereço basta fechar com solda, alterando o bit para 1, o(s) jumper(s) correspondente ao endereço desejado. Observe que o primeiro dígito do endereço é fixo.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;37&quot;&gt;&lt;/col&gt;&lt;col width=&quot;37&quot;&gt;&lt;/col&gt;&lt;col width=&quot;33&quot;&gt;&lt;/col&gt;&lt;col width=&quot;33&quot;&gt;&lt;/col&gt;&lt;col width=&quot;34&quot;&gt;&lt;/col&gt;&lt;col width=&quot;34&quot;&gt;&lt;/col&gt;&lt;col width=&quot;37&quot;&gt;&lt;/col&gt;&lt;col width=&quot;305&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0px;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;fixo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A5&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A4&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;jumper fechado (1). aberto (0)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;height: 0px;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;endereço padrão ( todos os jumpers abertos)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fechando o jumper A0, por exemplo teremos o endereço !2C: B1000001 (em binário) ou 0x41 (em hexa)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Ligação com os servos&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAqJYlko_A8mK-m4VyStPe_oIvn7467oQazdUqXYd41Z43uJUz7JHKA8u1Atudd5oirOWU_OCHFLDLIqeDAhlfsgPAv7jguUUEltlZX9Sw20eIBPj85fLjnLfho7ZQIUCQZ-cMqIEb_G8/s1600/Slide2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAqJYlko_A8mK-m4VyStPe_oIvn7467oQazdUqXYd41Z43uJUz7JHKA8u1Atudd5oirOWU_OCHFLDLIqeDAhlfsgPAv7jguUUEltlZX9Sw20eIBPj85fLjnLfho7ZQIUCQZ-cMqIEb_G8/s400/Slide2.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Ligação com os&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt; leds&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtLOM0l31awOBTW90jy5migC3WnaZIb6bd9jGKGafrwatdDs14UiDvFsqACxHG9GfJL2pbaSFuPHkoA2TI0AxJB0lALI8-SG4Vl2BMUIsPjS8su6xlFozeefhRSxo4ckXdK4C-gNi2ZTU/s1600/Slide1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtLOM0l31awOBTW90jy5migC3WnaZIb6bd9jGKGafrwatdDs14UiDvFsqACxHG9GfJL2pbaSFuPHkoA2TI0AxJB0lALI8-SG4Vl2BMUIsPjS8su6xlFozeefhRSxo4ckXdK4C-gNi2ZTU/s400/Slide1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O programa&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Conforme mencionado no inicio foram utilizados os código que acompanham a biblioteca da adafruit.&lt;/span&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt; &lt;/b&gt;Ela pode ser baixada pelo link abaixo.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library&quot; target=&quot;_blank&quot;&gt;Biblioteca para arduino&lt;/a&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://www.esp8266.nu/index.php/PCA9685&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Esta biblioteca tem 2 exemplos:&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJjQsDF01FTZ9bpOOVTp1fWSIoG9quxpr12nsUy5eawgP-eUsP3RGEKodIRMxraRRIoxOtudYnK1zwVz99naHuf3plLNQBPbaGj8NUibhYaE-KE2yKA5HqIkeonUfRadyWgatv24K2Nvg/s1600/Imagem2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJjQsDF01FTZ9bpOOVTp1fWSIoG9quxpr12nsUy5eawgP-eUsP3RGEKodIRMxraRRIoxOtudYnK1zwVz99naHuf3plLNQBPbaGj8NUibhYaE-KE2yKA5HqIkeonUfRadyWgatv24K2Nvg/s400/Imagem2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&amp;nbsp;pwmteste &lt;/b&gt;&amp;gt;&amp;gt; usado no exemplo dos leds&lt;/span&gt;&lt;/div&gt;
&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&amp;nbsp; servo &lt;/b&gt;&amp;gt;&amp;gt;  &lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;usado no exemplo dos servos&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/b&gt;&lt;/span&gt;&lt;b id=&quot;docs-internal-guid-245280c1-43f3-ec19-44c8-c22ed8e72973&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: &amp;quot;arial&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;a href=&quot;http://www.esp8266.nu/index.php/PCA9685&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: &amp;quot;arial&amp;quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/b&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/6244400203837977530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/6244400203837977530'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/11/controlador-pwm-16-canais-teste-com.html' title='Controlador PWM 16 CH PCA9685 com servos e Led'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/xVr7cDCHubw/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-1609688490754557410</id><published>2016-10-19T12:01:00.000-07:00</published><updated>2016-11-02T18:34:02.130-07:00</updated><title type='text'>Arduino termômetro sem contato MLX90614</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/jh9Hfns33_8/default.jpg?sqp=CNiAn8AF&amp;amp;rs=AOn4CLAjJijWJY6klXCDsn7gBqU3AF68nw&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/jh9Hfns33_8?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O que foi usado?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Sensor MLX90614;&lt;br /&gt;
Arduino UNO;&lt;br /&gt;
Display LCD 16x2 com módulo I2C;&lt;br /&gt;
Protoboard (para facilitar a conexão do display e sensor ao arduino);&lt;br /&gt;
Jumpers diversos;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Ligação:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhemZd1o7PstX-d_tPLTUH-WcnPzePNHGMCMatg4dPMBosbfmCXfIaG1n8fJtNW1Ym24cLLPeehLNAaZVrCW8cSSMFRb9DTbYlJ_imlLs7-tW4M_V78YXhI5JFvDot1kLsOx7Skc55NLRg/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;290&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhemZd1o7PstX-d_tPLTUH-WcnPzePNHGMCMatg4dPMBosbfmCXfIaG1n8fJtNW1Ym24cLLPeehLNAaZVrCW8cSSMFRb9DTbYlJ_imlLs7-tW4M_V78YXhI5JFvDot1kLsOx7Skc55NLRg/s400/Imagem1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O que faz?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Lê a temperatura ambiente e a temperatura do objeto, pessoa, etc que esteja na frete do sensor, a cerca de 2 ou 3cm de distância, e mostra no display.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.melexis.com/-/media/files/documents/datasheets/mlx90614-datasheet-melexis.pdf&quot;&gt;Datasheet do sensor&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/adafruit/Adafruit-MLX90614-Library&quot; target=&quot;_blank&quot;&gt;Biblioteca do sensor&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.xs4all.nl/~hmario/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip&quot; target=&quot;_blank&quot;&gt;Biblioteca do display&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Código &lt;/span&gt;&lt;/b&gt;(adaptado do código que acompanha a biblioteca do sensor)&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #272822; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// adaptado do exemplo da bibliteca:&lt;/span&gt;
&lt;span style=&quot;color: #75715e;&quot;&gt;// https://github.com/adafruit/Adafruit-MLX90614-Library&lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;byte&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;grau&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;{&lt;/span&gt;   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00110&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;// byte para criar o caracter grau&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b01001&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b01001&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00110&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;
                   &lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;b00000&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;};&lt;/span&gt;
&lt;span style=&quot;color: #75715e;&quot;&gt;// bibliotecas             &lt;/span&gt;
&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;Wire&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;Adafruit_MLX90614&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;background-color: #1e0010; color: #960050;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;include&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;LiquidCrystal_I2C&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;

&lt;span style=&quot;color: #75715e;&quot;&gt;// instanciando objetos lcd e mlx&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;LiquidCrystal_I2C&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0x27&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;Adafruit_MLX90614&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;mlx&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;Adafruit_MLX90614&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;setup&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;()&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;{&lt;/span&gt;

  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;mlx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;begin&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;// inicialieza sens. de temp&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;init&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;// inicializa displau&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;createChar&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;grau&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt; &lt;span style=&quot;color: #75715e;&quot;&gt;// cria caracter ( º )&lt;/span&gt;
   
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;backlight&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot; Teste MLX90614 &quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;clear&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;
&lt;span style=&quot;color: #f92672;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;loop&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;()&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;{&lt;/span&gt;

  &lt;span style=&quot;color: #75715e;&quot;&gt;// escreve temp ambiente&lt;/span&gt;

  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;setCursor&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;  
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Amb.: &quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mlx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;readAmbientTempC&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;());&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt; 
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  
  &lt;span style=&quot;color: #75715e;&quot;&gt;// escreve temp do objeto &lt;/span&gt;
  
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;setCursor&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Obj.: &quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mlx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;readObjectTempC&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;());&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;lcd&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
  
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;
&lt;span style=&quot;color: #f92672;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1609688490754557410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1609688490754557410'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/10/arduino-sensor-de-temperatura-sem.html' title='Arduino termômetro sem contato MLX90614'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/jh9Hfns33_8/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-5208741402190640832</id><published>2016-10-10T18:42:00.000-07:00</published><updated>2016-10-10T18:45:21.991-07:00</updated><title type='text'>Sensor de vibração, batidas ( knock sensor)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i9.ytimg.com/vi/TAQiXJwlUnM/default.jpg?sqp=CMSD8b8F&amp;amp;rs=AOn4CLBArzGlMp0sbs4yTbd9IcPXhZZjYw&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/TAQiXJwlUnM?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esse sensor é bastante simples. Consiste basicamente de dois contatos próximos, um fixo e outro ligado a uma mola. Havendo vibração suficiente para fazer a mola tocar o contato fixo, causada por uma batida no sensor ou na superfície em que ele esteja fixado, por exemplo, a saída, normalmente em nível alto (vcc), vai momentaneamente ao nível baixo (GND).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O sensor:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgoG7T5FeslJknPsSvSAE9IpFV2Bx0bo6-J3_g1g28o-bj0N2Yqzpm2VboHkliQpKvfpd35JVFKfeFMCiDVK7euXE9i8RhbrEIdx5nGJAqbmQKv6SbZas_6Anm8gNVnudK5VrA3HMUAU/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgoG7T5FeslJknPsSvSAE9IpFV2Bx0bo6-J3_g1g28o-bj0N2Yqzpm2VboHkliQpKvfpd35JVFKfeFMCiDVK7euXE9i8RhbrEIdx5nGJAqbmQKv6SbZas_6Anm8gNVnudK5VrA3HMUAU/s320/3.jpg&quot; width=&quot;315&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Abaixo o diagrama do sensor:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0TQS_7Ce7LRpZ9S3U6RtVj_FkbbAYCxwBgiEtLzPMGPjbZZ-d0X7YdfT8U0sqXAbjOL3wBzfR07vxcMdfJIipL4cURdB_9ZYm20EuVYTpcIQ0Q6uZIhnXRHZvN65j5DHn9ywJACWOon0/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0TQS_7Ce7LRpZ9S3U6RtVj_FkbbAYCxwBgiEtLzPMGPjbZZ-d0X7YdfT8U0sqXAbjOL3wBzfR07vxcMdfJIipL4cURdB_9ZYm20EuVYTpcIQ0Q6uZIhnXRHZvN65j5DHn9ywJACWOon0/s320/Imagem1.png&quot; width=&quot;182&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Em seguida a ligação com arduino usada no exemplo:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBU-6eKNdAz9C5vV08udjr6oIk1HTcAHnrmQ-ggL8cFGmkHd4Q3feL-Pc8G4kda8XdHeCcuUUX3DmcpxGZHxN9_87NB2UzDG0d7QhDp3vgl-Dfz1QWJWC_9JpfHhnAvwKAFckhb14ZFg/s1600/liga%25C3%25A7%25C3%25A3o+com+arduino.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;211&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhBU-6eKNdAz9C5vV08udjr6oIk1HTcAHnrmQ-ggL8cFGmkHd4Q3feL-Pc8G4kda8XdHeCcuUUX3DmcpxGZHxN9_87NB2UzDG0d7QhDp3vgl-Dfz1QWJWC_9JpfHhnAvwKAFckhb14ZFg/s320/liga%25C3%25A7%25C3%25A3o+com+arduino.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Código:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;

&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #272822; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pin&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;led&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ae81ff;&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66d9ef;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;sensor;&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;boolean&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;led_state&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;false;&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;setup&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;

  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pinMode(pin,&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;INPUT);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;pinMode(led,&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;OUTPUT);&lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #66d9ef;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a6e22e;&quot;&gt;loop&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;()&lt;/span&gt;
&lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;sensor&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;digitalRead(pin);&lt;/span&gt;
    &lt;span style=&quot;color: #66d9ef;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;(sensor&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;LOW)&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;{&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;led_state&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #f92672;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;led_state;&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;digitalWrite(led,&lt;/span&gt; &lt;span style=&quot;color: #f8f8f2;&quot;&gt;led_state);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;delay(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;);&lt;/span&gt;
  &lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: #f8f8f2;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5208741402190640832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5208741402190640832'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/10/sensor-de-vibracao-batidas-knock-sensor.html' title='Sensor de vibração, batidas ( knock sensor)'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/TAQiXJwlUnM/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-6969906811114832308</id><published>2016-08-14T10:31:00.000-07:00</published><updated>2016-08-14T10:35:26.147-07:00</updated><title type='text'>Módulo rfid MFRC522 + ARDUINO + LCD 16x2 I2C</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CFrOMAYQIAs&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nesse exemplo o primeiro cartão é lido e seu número de série é armazenado em uma variável.&lt;br /&gt;
Depois ao aproximar um cartão, este é lido e seu número é comparado com o número armazenado. Se forem iguais mostra a mensagem &quot; ACESSO LIBERADO&quot; caso contrário mostra &quot;ACESSO NEGADO&quot;.&lt;br /&gt;
Como é um programa teste não me preocupei em armazenamento não volátil do número de série do cartão valido. &amp;nbsp;Para uso real será necessário, pro exemplo, alterar o código para armazenar o número de série do cartão &quot;válido&quot; na memoria eprom do arduino.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Material utilizado:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Módulo RFID MFRC522 (&lt;a href=&quot;http://www.nxp.com/documents/data_sheet/MFRC522.pdf&quot; target=&quot;_blank&quot;&gt;datasheet&lt;/a&gt;)&lt;br /&gt;
Arduino UNO (foi usado um similar)&lt;br /&gt;
Display LCD 16x2 com módulo I2C.&lt;br /&gt;
Jumpers&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Ligação:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtdD8xdGJavAXEjt2UrHVcl9KxnUBdFqtxLB2uXFfiQiXfhQq1IJ_fN4xktzsfPa8MwGgEtGXmVsXg_LdKkx7NOkFLyzY4LbgttD0F2u_2_k4sR4kAU5Nz6YdEu1R0AuV2YjRg9d0ovRA/s1600/liga%25C3%25A7%25C3%25A3o+com+arduino+uno.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtdD8xdGJavAXEjt2UrHVcl9KxnUBdFqtxLB2uXFfiQiXfhQq1IJ_fN4xktzsfPa8MwGgEtGXmVsXg_LdKkx7NOkFLyzY4LbgttD0F2u_2_k4sR4kAU5Nz6YdEu1R0AuV2YjRg9d0ovRA/s400/liga%25C3%25A7%25C3%25A3o+com+arduino+uno.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Código:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;fixed&amp;quot; , monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;/* adaptado do codigo que acompanha a biblioteca MFRC522:
https://github.com/ljos/MFRC522

Este exemplo armazena o numero primeiro cartão lido em uma variavel
A partir ao aproximar um catão é feita a comparação entre o valor lido do cartão e o valor armazenado.
As informações são mostrada em um display 16x2 via comunicação I2C.
*/

// bibliotecas
#include &amp;lt;SPI.h&amp;gt;  // padrão do arduino
#include &amp;lt;MFRC522.h&amp;gt;  // necessário adicionar na pasta libraries do arduino
#include &amp;lt;Wire.h&amp;gt; // padrão do arduino
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt; // necessário adicionar na pasta libraries do arduino

LiquidCrystal_I2C lcd(0x27,16,2);
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);    // cria uma intancia MFRC522 com o nome mfrc522

int *aux;
int card1[4];
int flag = 0;
int led = 13;
int cnt =0;

void setup() {
        pinMode(led, OUTPUT);
        
        lcd.init();
        lcd.backlight();
    SPI.begin();        // Init SPI bus
    mfrc522.PCD_Init();    // Init MFRC522 card
        lcd.print(&quot; Aproxime o card&quot;);
        lcd.setCursor(0,1);
        lcd.print(&quot; Para registro  &quot;);
}

void loop() {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
        return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
        return;
    }

    // Now a card is selected. The UID and SAK is in mfrc522.uid.
    
    // Dump UID
    
    for (byte i = 0; i &amp;lt; mfrc522.uid.size; i++) {
            aux[i]= mfrc522.uid.uidByte[i];
    } 
           if(flag == 0)
           {
             lcd.clear();
             lcd.print(&quot;   Card UID:    &quot;);
             lcd.setCursor(0,1);
             for (byte i = 0; i &amp;lt; mfrc522.uid.size; i++) {
               card1[i] = aux[i];
             lcd.print( card1[i], DEC);
             lcd.print( &quot; &quot;);
             flag =1;
            }
           delay(3000);
           lcd.clear();
           lcd.print(&quot; Aproxime o card&quot;);
           lcd.setCursor(0,1);
           lcd.print(&quot;  Para Acesso   &quot;);
           } 

           else{
            
           
             for (byte i = 0; i &amp;lt; mfrc522.uid.size; i++) {
               if(aux[i] == card1[i])
                cnt++;
             }
                            
            if(cnt == mfrc522.uid.size-1)
            {
              lcd.clear();
              lcd.print(&quot;     ACESSO     &quot;);
              lcd.setCursor(0,1);
              lcd.print(&quot;   PERMITIDO    &quot;);
              delay(2000);
             }
             else
             {
              lcd.clear();
              lcd.print(&quot;     ACESSO     &quot;);
              lcd.setCursor(0,1);
              lcd.print(&quot;     NEGADO     &quot;);
              delay(2000);
             }
             
           }
           
           lcd.clear();
           lcd.print(&quot; Aproxime o card&quot;);
           lcd.setCursor(0,1);
           lcd.print(&quot;  Para Acesso   &quot;);
  cnt=0;
}

&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/6969906811114832308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/6969906811114832308'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/08/modulo-rfid-mfrc522-arduino-lcd-16x2-i2c.html' title='Módulo rfid MFRC522 + ARDUINO + LCD 16x2 I2C'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/CFrOMAYQIAs/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-1289227299035711161</id><published>2016-08-02T12:09:00.001-07:00</published><updated>2016-08-05T07:08:50.992-07:00</updated><title type='text'>Módulo relé de 4 canais como ponte H dupla</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2aH1t2bh6yM&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&amp;nbsp;Uma solução simples e ecomímica, para controle de dois motores de corrente continua é o modulo relé de 4 canais. Com ele é possível controlar o sentido de rotação de dois motores o suficiente para construir um robô com três rodas, duas de tração e um rodizio, por exemplo, com controle de direção. O &quot;porém&quot; do modulo relé é que não é possível controle de velocidade sem o uso de um transistor de potencia ou um mosfet adicional.&lt;br /&gt;
&lt;br /&gt;
Um exemplo de modulo rele 4 canais (4 relés). Ele possi 4 relé de 1 polo x 2 posições:&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSEJ2XzXxIlXvm9HVp6XrZVTZTti7d7n8ZrADpeXQAQ60IcxiMzqYKHUDkg6KHvoRhGhDKcdppi5SSn-ktD85eE-o1tT5A65uTQPmuFiGUhjz69dI_3FQEEMmtgRITaF_FeDSQeUkQDCU/s1600/20141229_204459.jpg&quot; imageanchor=&quot;1&quot; style=&quot;font-size: 12.8px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSEJ2XzXxIlXvm9HVp6XrZVTZTti7d7n8ZrADpeXQAQ60IcxiMzqYKHUDkg6KHvoRhGhDKcdppi5SSn-ktD85eE-o1tT5A65uTQPmuFiGUhjz69dI_3FQEEMmtgRITaF_FeDSQeUkQDCU/s400/20141229_204459.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 12.8px;&quot;&gt;Exemplo de modulo relé 4 canais. Nesse caso 5V&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvjpPVFfSr21AY9xFXdqv1wtcxJ1vXFmDpHGRxH_LOTPGjSrGj3zbfx0Pfg_onlqASRzCj3s5ZcTI4SGK0ZrWCvq2PdjEo0jHBzJDUZB-V_8CRYVdc4FnmZi-OAu-LCZ6PAEoiFG3EWd8/s1600/Slide1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;font-size: 12.8px; margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvjpPVFfSr21AY9xFXdqv1wtcxJ1vXFmDpHGRxH_LOTPGjSrGj3zbfx0Pfg_onlqASRzCj3s5ZcTI4SGK0ZrWCvq2PdjEo0jHBzJDUZB-V_8CRYVdc4FnmZi-OAu-LCZ6PAEoiFG3EWd8/s400/Slide1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ponte H&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: 12.8px;&quot;&gt;Em um motor de Corrente contínua invertendo a polaridade da alimentação em seus terminais:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_8Srz6OSj6vTpNNw2_-dbMAsxBDfsMVaD1XgQfGwq7N7qsdWuNl6jLRI-tNR-XydzT1sFfdU4DWN_Wkl5pVaAwyw279GClwWp90kTgTKq7QvIh-9cZi-G7txFuo5Lh199brVAQlLVCtc/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: left;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_8Srz6OSj6vTpNNw2_-dbMAsxBDfsMVaD1XgQfGwq7N7qsdWuNl6jLRI-tNR-XydzT1sFfdU4DWN_Wkl5pVaAwyw279GClwWp90kTgTKq7QvIh-9cZi-G7txFuo5Lh199brVAQlLVCtc/s320/Imagem1.png&quot; width=&quot;277&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: 12.8px;&quot;&gt;Na ponte H essa caracteristica é aproveitada &amp;nbsp;para controlar do&amp;nbsp;sentido&amp;nbsp;de rotação desses motores&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: 12.8px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vWgI619Du6aZ38P1IMyCVDzVUbnm-Wz6bfa3BMfi6DkyjMG644R09XrJ1DE1N5YjDFwMSwhEli1K5GgwnyTzdvyjmLYz6QScQqmc9PDtaIEw1q2t3NiiqlZzxnhPqQJblorpRva7Mx8/s1600/Slide5.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vWgI619Du6aZ38P1IMyCVDzVUbnm-Wz6bfa3BMfi6DkyjMG644R09XrJ1DE1N5YjDFwMSwhEli1K5GgwnyTzdvyjmLYz6QScQqmc9PDtaIEw1q2t3NiiqlZzxnhPqQJblorpRva7Mx8/s400/Slide5.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg24mIW5vfoELtActDJUIpC5fvppPdygzrKms5SRM300VwaP_tkodQdXlV1VTu_NiQrVkjYlEtwVKcjp2zCvy1kv6Aaw_lnMZZCjnLFKHjYdoWf8XBqmf4sTVM61FwiDKybx5nlNORD5cM/s1600/Slide6.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg24mIW5vfoELtActDJUIpC5fvppPdygzrKms5SRM300VwaP_tkodQdXlV1VTu_NiQrVkjYlEtwVKcjp2zCvy1kv6Aaw_lnMZZCjnLFKHjYdoWf8XBqmf4sTVM61FwiDKybx5nlNORD5cM/s400/Slide6.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXMyYtzqthDW-cQ6XjiG58QFL4fWYLE3o0Oe491j56cLknLpfHsVA7XJ1F3ZbHE3HYrOSTMOqGYI_nKYqjCyeswSC2qyuo4UbuvfIfk-llf7RXjDj7Cnd9CrTZSHe4kZeU_s6gWJzdWQ0/s1600/Slide7.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXMyYtzqthDW-cQ6XjiG58QFL4fWYLE3o0Oe491j56cLknLpfHsVA7XJ1F3ZbHE3HYrOSTMOqGYI_nKYqjCyeswSC2qyuo4UbuvfIfk-llf7RXjDj7Cnd9CrTZSHe4kZeU_s6gWJzdWQ0/s400/Slide7.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2bh2iCZZ9QktTu2jnKwE00ksXmR-nA3Jifrob34F7vi-Hsvjx-cIggv8mVMbkOGxJ1hkxroSpW6JOz2w6OvP_voVrD3mVG3PG7Y-1ypzhUOqXMomXw70HinSWhTjcf8ilTgQtKRpHnkI/s1600/Slide8.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2bh2iCZZ9QktTu2jnKwE00ksXmR-nA3Jifrob34F7vi-Hsvjx-cIggv8mVMbkOGxJ1hkxroSpW6JOz2w6OvP_voVrD3mVG3PG7Y-1ypzhUOqXMomXw70HinSWhTjcf8ilTgQtKRpHnkI/s400/Slide8.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Para facilitar a compreensão considere que montaremos um carrinho com parte de tração como a figura abaixo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrP4lKm4Jn7BstMUfub1iLnp2vUSY7HmFOPGV3TmPTCUM3dhM9jyAunfndWWAaDbDtdodPNdveXSC9HruIA38qIHVukgyAa97-VsFUHO_CjMU4TtaCaISRo9z_UtMNNZJ4Ohb8wS1PyQU/s1600/Slide4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrP4lKm4Jn7BstMUfub1iLnp2vUSY7HmFOPGV3TmPTCUM3dhM9jyAunfndWWAaDbDtdodPNdveXSC9HruIA38qIHVukgyAa97-VsFUHO_CjMU4TtaCaISRo9z_UtMNNZJ4Ohb8wS1PyQU/s400/Slide4.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Usaremos o arduino como elemento principal de controle:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
O primeiro passo é fazer as ligações necessárias no modulo relé 4 canais para que ele seja utilizado como duas pontes H:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXeNXSqSdYOA-1u3DbqTYxOBlt-KKm8b0AQIbD-PeKC-6gx-e49AwKkwFiL7OL-yiMd2gOOGgT5WSPmi1ocJjytO89r3LNRKYOotu-GNHDEscCAAzNWeAfuwUD1C2V7kNu0CLxnjQPZ0k/s1600/Imagem2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXeNXSqSdYOA-1u3DbqTYxOBlt-KKm8b0AQIbD-PeKC-6gx-e49AwKkwFiL7OL-yiMd2gOOGgT5WSPmi1ocJjytO89r3LNRKYOotu-GNHDEscCAAzNWeAfuwUD1C2V7kNu0CLxnjQPZ0k/s400/Imagem2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Em seguida ligar os motores. Nesse primeiro momento sem se preocupar com a polarização:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDBeybHQKD8KPeKPqL62huMJHQ2FYjxlcXutcWvjuI0fkZcSWPUa6xfq88elG0XjtjHAp-2NiPhK4zMuGl4TR9dd_NYd1chBT3mzTbW11Vtf8DsxGXwFsEYtMIjMqH1AW807y8inIV6iQ/s1600/Imagem3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDBeybHQKD8KPeKPqL62huMJHQ2FYjxlcXutcWvjuI0fkZcSWPUa6xfq88elG0XjtjHAp-2NiPhK4zMuGl4TR9dd_NYd1chBT3mzTbW11Vtf8DsxGXwFsEYtMIjMqH1AW807y8inIV6iQ/s400/Imagem3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
O próximo passo é ligar parcialmente ao arduino para ajustar o sentido de rotação. Nessa etapa não é necessário programa rodando no Arduino:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9FGNvQ7ducDLGG2L5OFWg1rRkuj7CsSaWXndYsz2Gpsz-tEMvnUC4-OlkCFZKBBb2v8xwa83cBWGFnEdADtSH0LQO8DQR3WEWCFl3RzJSU4R7mAN9uMl0CRj4P7F7SoP021pg464fN0/s1600/Slide2+sem+legenda.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;261&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9FGNvQ7ducDLGG2L5OFWg1rRkuj7CsSaWXndYsz2Gpsz-tEMvnUC4-OlkCFZKBBb2v8xwa83cBWGFnEdADtSH0LQO8DQR3WEWCFl3RzJSU4R7mAN9uMl0CRj4P7F7SoP021pg464fN0/s400/Slide2+sem+legenda.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: center; unicode-bidi: embed; word-break: normal;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Ligar como acima sem se preocupar com
programação do arduino para ajustar o sentido de rotação nos motores. Por
exemplo o sentido indicado na ilustração acima que serve para uso em um robô.
Consideremos que girar nesse sentido faz o robô ir para frente.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; text-align: center; unicode-bidi: embed; word-break: normal;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Se ao ligar o sentido de rotação não for
o indicado na figura basta inverter os foi de ligação do motor com giro errado.
No desenho acima os fios verdes&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Após os testes, completar as ligações com o arduino:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ISpCNlWGN2gM6eNDJaxFg-BdM5bx5FYzQxwN9nvXO__E6E5FtTEWwy7UP-ePikfsnEtH3r8awS5JOsJ7vqJsAF6mhhBcerkEkUuzfKD39pyYXE22OwVUcRTpFGgzK0Aef6Ip8ldz3dA/s1600/Slide3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ISpCNlWGN2gM6eNDJaxFg-BdM5bx5FYzQxwN9nvXO__E6E5FtTEWwy7UP-ePikfsnEtH3r8awS5JOsJ7vqJsAF6mhhBcerkEkUuzfKD39pyYXE22OwVUcRTpFGgzK0Aef6Ip8ldz3dA/s400/Slide3.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
O código para teste é bastante simples. Segue abaixo comentado. As funções &quot;frete&quot;, &quot;re&quot;, &quot;direita&quot;, &quot;esquerda&quot; e &quot;parar&quot; podem ser aproveitadas para qualquer projeto dessa natureza. Um detalhe importante sobre o módulo que esta sendo usado é que ele deve receber sinal de nível baixo (0V) em um dos pinos IN1, IN2, IN3 ou IN4 &amp;nbsp;para acionar o relé correspondente.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f8f8f8; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;/* funçao teste carrinho:&lt;/span&gt;

&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;vai para frete por 2 segundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;vai para tras pro 2 segundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;vai para esquerda por 2 segundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;vai para a direita por 2 segundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;para por 2 segundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;pra repetir é necessario pressionar o botão reset do arduino&lt;/span&gt;

&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;*/&lt;/span&gt;

&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; IN1= &lt;span style=&quot;color: #666666;&quot;&gt;5&lt;/span&gt;;
&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; IN2= &lt;span style=&quot;color: #666666;&quot;&gt;4&lt;/span&gt;;
&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; IN3= &lt;span style=&quot;color: #666666;&quot;&gt;3&lt;/span&gt;;
&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; IN4= &lt;span style=&quot;color: #666666;&quot;&gt;2&lt;/span&gt;;

&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;setup&lt;/span&gt;() {

  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;//declara pinos como saida&lt;/span&gt;
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// chama a funçao frete passando parametro em milesegundos&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// anda para frete por 2 segundos&lt;/span&gt;
frete(&lt;span style=&quot;color: #666666;&quot;&gt;2000&lt;/span&gt;); 


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// anda para traz por 2 segundos &lt;/span&gt;
re(&lt;span style=&quot;color: #666666;&quot;&gt;2000&lt;/span&gt;); 

&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// vira para direita por 2 segundos &lt;/span&gt;
direita(&lt;span style=&quot;color: #666666;&quot;&gt;2000&lt;/span&gt;); 

&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// anda para esquerda por 2 segundos &lt;/span&gt;
esquerda(&lt;span style=&quot;color: #666666;&quot;&gt;2000&lt;/span&gt;); 


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// Para por 2 segundos&lt;/span&gt;
parar(&lt;span style=&quot;color: #666666;&quot;&gt;2000&lt;/span&gt;); 

}

&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;loop&lt;/span&gt;() {
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// como deve execultar uma apenas uma vez para teste a funçao loop esta vazia&lt;/span&gt;
&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// o programa foi colocado na funçao setup&lt;/span&gt;
}



&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// função frente&lt;/span&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;frete&lt;/span&gt;(&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; tmp)
{
 
   &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR ESQUERDO FRETE&lt;/span&gt;
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 
  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR DIREITO FRETE&lt;/span&gt;
 digitalWrite(IN3,HIGH );
 digitalWrite(IN4,LOW);

 delay(tmp);

}


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// função re&lt;/span&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;re&lt;/span&gt;(&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; tmp)
{

  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR ESQUERDO RE&lt;/span&gt;
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 
  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR DIREITO RE&lt;/span&gt;
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);

 delay(tmp);

}

&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// função esquerda&lt;/span&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;esquerda&lt;/span&gt;(&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; tmp)
{

   &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR ESQUERDO RE&lt;/span&gt;
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 
  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR DIREITO FRETE&lt;/span&gt;
 digitalWrite(IN3,HIGH );
 digitalWrite(IN4,LOW);

 delay(tmp);

}


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// função direita&lt;/span&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;direita&lt;/span&gt;(&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; tmp)
{

   &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR ESQUERDO FRENTE&lt;/span&gt;
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 
  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR DIREITO RE&lt;/span&gt;
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);

 delay(tmp);

}


&lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// função parar&lt;/span&gt;
&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;parar&lt;/span&gt;(&lt;span style=&quot;color: #b00040;&quot;&gt;int&lt;/span&gt; tmp)
{

   &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR ESQUERDO PARADO&lt;/span&gt;
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,HIGH);
 
  &lt;span style=&quot;color: #408080; font-style: italic;&quot;&gt;// MOTOR DIREITO PARADO&lt;/span&gt;
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,HIGH);

 delay(tmp);

}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1289227299035711161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1289227299035711161'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2016/08/modulo-rele-de-4-canais-como-ponte-h.html' title='Módulo relé de 4 canais como ponte H dupla'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/2aH1t2bh6yM/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-5069071366457561613</id><published>2014-08-03T14:36:00.000-07:00</published><updated>2014-08-03T14:36:54.615-07:00</updated><title type='text'>Arduino + sensor digital de luminosidade BH1750FV + LCD I2C</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/vOLMEEu2oSM?rel=0&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;O sensor&amp;nbsp;BH1750FV é um senso digital de luminosidade com comunicação I2C.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Sua utilização é bastante simples pois, oferece em sua saída o valor pronto para uso em Lux dispensando cálculos e calibrações.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;As características básicas são:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;gt;&amp;gt; Tensão de alimentação: 3V-5V;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;Faixa de medição: 0-65535 lux;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;Conversor adc integrado: 16 bits;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;Saída digital direta dispensa cálculos complexos ou calibração;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;Dois endereços possíveis. Permitindo a ligação de dois módulos no mesmo microcontrolador:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp;0x5C (pino ADD em nível alto) e 0x23 (pino add em nível baixo, padrão).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ligações para o exemplo do vídeo:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL4wJEnaAHfyDZvWlsqbCgkkqDEg0kJAex_D6pDf9AQm2rLmVjQWErJHgAc3wtpFhOAa6H8V2JQBcff1CsbD7Pn1pTAuuJqsQdeM5FXjYlBCZfxyqiFLAftoR6qW2lMkXxPf4vIn2waFE/s1600/liga%C3%A7%C3%A3o+com+o+arduino+e+display+i2c.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL4wJEnaAHfyDZvWlsqbCgkkqDEg0kJAex_D6pDf9AQm2rLmVjQWErJHgAc3wtpFhOAa6H8V2JQBcff1CsbD7Pn1pTAuuJqsQdeM5FXjYlBCZfxyqiFLAftoR6qW2lMkXxPf4vIn2waFE/s1600/liga%C3%A7%C3%A3o+com+o+arduino+e+display+i2c.png&quot; height=&quot;270&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;O código exemplo abaixo é uma adaptação para display I2C do código que acompanha a biblioteca para arduino disponibilizada por Genotronex em: https://github.com/Genotronex/BH1750FVI_Master&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A biblioteca &lt;a href=&quot;http://arduino-info.wikispaces.com/file/view/LiquidCrystal_I2C1602V1.zip/341635514/LiquidCrystal_I2C1602V1.zip&quot; target=&quot;_blank&quot;&gt;LCD_I2C&lt;/a&gt; também é utilizada.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt; /*
Adaptação para display 12c por MelquíadesJR do código escrito por Mohannad Rawashdeh 
como exemplo da biblioteca: https://github.com/Genotronex/BH1750FVI_Master

  VCC &amp;gt;&amp;gt;&amp;gt; 3.3V
  SDA &amp;gt;&amp;gt;&amp;gt; A4 
  SCL &amp;gt;&amp;gt;&amp;gt; A5
  addr &amp;gt;&amp;gt; A3
  Gnd &amp;gt;&amp;gt;&amp;gt;Gnd
 
 */
 
 // Bibliotecas:
 #include &amp;lt;BH1750FVI.h&amp;gt; // biblioteca do sensor
 #include &amp;lt;Wire.h&amp;gt; // biblioteca I2C
 #include &amp;lt;LiquidCrystal_I2C.h&amp;gt;  // biblioteca para o display lcd
 LiquidCrystal_I2C lcd(0x27,16,2);
 
 uint16_t Light_Intensity=0;

 BH1750FVI LightSensor;  //instancia o sensor
 
void setup() {

  lcd.init();  // inicializa o lcd 
  lcd.backlight(); // acende o backlight do lcd 
 
  LightSensor.begin(); // inicializa o sensor 
  //endereço I2C 0x23 (Device_Address_L para endereço 0x5C)
  LightSensor.SetAddress(Device_Address_L); 
  LightSensor.SetMode(Continuous_H_resolution_Mode);

  lcd.setCursor(0, 0);
  lcd.print(&quot;BH1750 Sensor&quot;);
  lcd.setCursor(1, 1);
  lcd.print(&quot;Inciando...&quot;); 
  delay(2000);
  lcd.clear();
 lcd.print(&quot; Luminosidade:   &quot;);
}
 
 void loop() {
   
   lcd.setCursor(5, 1);
   lcd.print(&quot;      &quot;);
   lcd.setCursor(5, 1);
   Light_Intensity = LightSensor.GetLightIntensity();
   lcd.print(Light_Intensity);
   lcd.setCursor(10, 1);
   lcd.print(&quot;Lux&quot;);
   delay(500);
   
  
}
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tecnomelque.blogspot.com/feeds/5069071366457561613/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://tecnomelque.blogspot.com/2014/08/arduino-sensor-digital-de-luminosidade.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5069071366457561613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5069071366457561613'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2014/08/arduino-sensor-digital-de-luminosidade.html' title='Arduino + sensor digital de luminosidade BH1750FV + LCD I2C'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL4wJEnaAHfyDZvWlsqbCgkkqDEg0kJAex_D6pDf9AQm2rLmVjQWErJHgAc3wtpFhOAa6H8V2JQBcff1CsbD7Pn1pTAuuJqsQdeM5FXjYlBCZfxyqiFLAftoR6qW2lMkXxPf4vIn2waFE/s72-c/liga%C3%A7%C3%A3o+com+o+arduino+e+display+i2c.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-4511655845664655290</id><published>2012-12-16T17:02:00.001-08:00</published><updated>2016-12-08T15:10:56.000-08:00</updated><title type='text'>Arduino TCS3200D Sensor de cor RGB</title><content type='html'>&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/5aFRmUhWa0Q&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;O
TCS3200D é um sensor estático de cor. Ele possui 16 foto transistores com
filtro Vermelho (R), 16 com filtro Verde&amp;nbsp; (G), 16 com filtro para azul(B)
e 16 sem filtro (branco). Os filtros impedem a passagem das demais cores
permitido que o fototraisistor seja excitado apenas pela luz quista. Através de
dois pinos é&amp;nbsp;possível&amp;nbsp;selecionar qual grupo de fototransistor estará
ativo e consequentemente qual luz será captada pelo sensor. A saída do sinal no
sensor em uma onda quadra com&amp;nbsp;frequência&amp;nbsp;proporciona a intensidade da
cor medida R, G, B, W.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;&lt;b&gt;O sensor&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;Como&amp;nbsp;mencionado&amp;nbsp;na
introdução o sensor é basicamente constituído por quatro grupos de
fototrasistores&amp;nbsp;três&amp;nbsp;desses grupos com filtros.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;Os
fototransistores são simplificadamente,&amp;nbsp;transistores&amp;nbsp;cujas bases são
expostas. A incidência de luz sobre a base faz com que o transistor conduza. A variação
dessa luz provoca variação proporcional na corrente que circula no
fototransistor até o limite de saturação. Colocando um filtro que só deixe
passar luz vermelha, por exemplo, apenas a luz vermelha fara conduzir o
fototransistor. Então a corrente que circula no fototransistor será função da
luz vermelha sobre ele.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;É isso
que ocorre no sensor, Um grupo de sensores não tem filtro algum o que o torna sensível
a toda luz que incida sobre ele e cada um dos três outros grupos de sensores é
dotado de filtro para uma determinada cor de luz vermelho, verde e azul.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz7ClnOzTAbwXMhSMkyu6s2vjOL3-S-LQULLSNLeauSgdZXzkIDIwaIvoOUq89HAh24U7W3FLe1j3oyFbXQPmCnITC_nPniemBRwKyDmqgzXfTeFJAkndGGWi1mFCoZ05r5KqOhemR6ZQ/s1600/TABELA+S2+S3.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;113&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz7ClnOzTAbwXMhSMkyu6s2vjOL3-S-LQULLSNLeauSgdZXzkIDIwaIvoOUq89HAh24U7W3FLe1j3oyFbXQPmCnITC_nPniemBRwKyDmqgzXfTeFJAkndGGWi1mFCoZ05r5KqOhemR6ZQ/s200/TABELA+S2+S3.png&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;Através
dos pinos S2 e S3 é possível selecionar qual grupo de fototransistores estará
ativo e consequentemente qual luz o sensor estará medindo e mostrando em sua
saída. A tabela ao lado mostra as combinações destes pinos e o respectivos
sensores selecionados.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKMuPt55cnj6PHkku-HjpbMqVqAFU7XbaS1PThczs-GeUNrhKcjt7p3EBYjcDY-NdzxKPQtDK2JkCz0j7L-hCGEu-NLW_dKT70dmf3sMmj_trKbzYI0AoIcPjelyhD8NXwHaWPSO3lU8E/s1600/TABELA+S0+S1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;113&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKMuPt55cnj6PHkku-HjpbMqVqAFU7XbaS1PThczs-GeUNrhKcjt7p3EBYjcDY-NdzxKPQtDK2JkCz0j7L-hCGEu-NLW_dKT70dmf3sMmj_trKbzYI0AoIcPjelyhD8NXwHaWPSO3lU8E/s200/TABELA+S0+S1.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt; line-height: 115%;&quot;&gt;Outra possibilidade de configuração do sensor
é escalonar a frequência de saída escolhendo através dos pinos S0 e S1.&amp;nbsp;A
tabela ao lado mostra as combinações destes pinos e as respectivas escalas.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt; line-height: 115%;&quot;&gt;&lt;b&gt;Recebendo os dados do sensor&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;A saída
do sensor e uma onda com frequência diretamente proporcional a intensidade da
cor medida naquele instante. Queremos obter a frequência em ciclos por segundo.
Como se trada de uma onda quadrada com &quot;duty cicle&quot; de 50% (metade do
ciclo em nível alto e metade em nível baixo). Então o programa deve contar
todos os ciclos que ocorrem em um segundo. Ou estimar contando por 1/2 segundo
e multiplicando por 2.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;Uma forma
de contar os ciclos para determinar a frequência é usando uma interrupção
externa e um timmer o timer é setado para um segundo, por exemplo, e durante
esse tempo uma variável é incrementada toda vez que a saída do sensor ligada ao
pino de interrupção correspondente sai do nível baixo para o alto.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;Para
receber&amp;nbsp; os dados do sensor deve-se s&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;elecionar
o filtro através de S1, S2, S3 e S4 conforme a tabela abaixo e r&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt;&quot;&gt;eceber
e decodificar a informação sobre a cor selecionada através do pino OUT.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt; line-height: 115%;&quot;&gt;O programa para o arduino mostrado abaixo foi
adaptado do programa encontrado&lt;span class=&quot;apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.elecfreaks.com/1666.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;; font-size: 13.5pt; line-height: 115%;&quot;&gt;neste site&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13.5pt; line-height: 115%;&quot;&gt;.&amp;nbsp;usa a solução timme e interrupção externa.
O programa para processing foi escrito suando como base o exemplo que acompanha
a IDE do arduino &quot;Arduino call response&quot;. Na primeira leitura o
programa ajusta o balanço de branco, por isso é importante expor o sensor a
referência de branco ao iniciar o arduino. No vídeo eu coloco uma folha em
branco sobre o sensor ao iniciar o arduino para ter esta referência.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Código para o Arduino:&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;// este codigo e uma adaptação do coodigo encontrado em:
//http://www.elecfreaks.com/1666.html

//é necessario a biblioteca Timer1 que pode ser baixada aqui:
//http://www.arduino.cc/playground/Code/Timer1
// baixe renomei-a para TimerOne e adcione-a na pasta libriries da ide do arduino

#include &amp;lt;TimerOne.h&amp;gt;

#define OUT  2
#define S2   5
#define S3   6
#define S0   3
#define S1   4

volatile int g_count =0;
int g_flag = 0;
int g_array[3] = {0};
float g_SF[3] = {0};

void setup()
{
  // Init TSC230 and setting Frequency.
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(OUT, INPUT);

  digitalWrite(S0, LOW);  // OUTPUT FREQUENCY SCALING 2%
  digitalWrite(S1, HIGH);
  
  Serial.begin(115200);
  Timer1.initialize();             // defaulte is 1s
  Timer1.attachInterrupt(TSC_Callback);
  attachInterrupt(0, TSC_Count, RISING);

  delay(4000);

  g_SF[0] = 255.0/ g_array[0];     //R Scale factor
  g_SF[1] = 255.0/ g_array[1] ;    //G Scale factor
  g_SF[2] = 255.0/ g_array[2] ;    //B Scale factor

  estabeleceContato(); // aguarda contato com o processing
}
void loop()
{
   g_flag = 0;
   for(int i=0; i&amp;lt;3; i++)
   {
   int val = int(g_array[i] * g_SF[i]);
   val = constrain(val, 0, 255);
   Serial.write(val);
   }
   delay(4000);

}

// seta o filtro
void TSC_FilterColor(int Level01, int Level02)
{
  if(Level01 != 0)
    Level01 = HIGH;

  if(Level02 != 0)
    Level02 = HIGH;

  digitalWrite(S2, Level01);
  digitalWrite(S3, Level02);
}
// incrementa g_cont cada vex que a sáida do sensor
// vai do nivel baixo ao alto
void TSC_Count()// finção chamada pela interrupção
{
  g_count ++ ;  // incrementa g_cont
}

void TSC_Callback()
{
  switch(g_flag)
  {
    case 0:
          TSC_WB(LOW, LOW);     //Red
         break;
    case 1:
         g_array[0] = g_count;
         TSC_WB(HIGH, HIGH);    //Green
         break;
    case 2:
         g_array[1] = g_count;
         TSC_WB(LOW, HIGH);     //Blue
         break;
    case 3:
         g_array[2] = g_count;
         TSC_WB(HIGH, LOW);     //Clear(no filter)
         break;
   default:
         g_count = 0;
         break;
  }
}

void TSC_WB(int Level0, int Level1) //balanceamento de branco
{
  g_count = 0;
  g_flag ++;
  TSC_FilterColor(Level0, Level1);
  Timer1.setPeriod(1000000);    // define periodo de 1 segundo
}

 void estabeleceContato() {
    while (Serial.available() &amp;lt;= 0) {
    Serial.write(&#39;A&#39;);   // envia A ate estabelecer contato
    delay(300);
  }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Código para o Processing:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;// Adaptado do exemplo SerialCallResponse que acompanha a IDE do Arduino

import processing.serial.*;

 int comando =0;
 int y_01 = 55;
 
Serial myPort; // porta serial
int[] serialInArray = new int[3]; // vetor para armazenar o valores recebidos
int serialCount = 0;           // usado para contar o numero de bytes recebidos

int[] buffer = new int[3];

boolean firstContact = false;  // Whether we&#39;ve heard from the microcontroller

void setup() {
  // imprime a lista de portas seriais
  println(Serial.list());

  String portName = Serial.list()[0];
  // substituir COM9 pela porta onde esta o Arduino
  myPort = new Serial(this, &quot;COM9&quot;, 115200); 
  size(800, 600);  //janela, largura, altura
  smooth();
  
}

void draw() {

 
    background(buffer[0],buffer[1],buffer[2]);      
    
}


void serialEvent(Serial myPort) {
  
  // le os bytes da porta serial
  int inByte = myPort.read();
  // se receber o primeiro byte e for &#39;A&#39;
  if (firstContact == false) {
    if (inByte == &#39;A&#39;) { 
      myPort.clear();       // Limpa o buffer da porta serial
      firstContact = true;  // o primeiro contato ja ocorreu
      myPort.write(&#39;A&#39;);    // envia &quot;A&quot; para que o arduino 
                            // reconheça o primeiro contato
    } 
  } 
  else {
    // se não for o primeiro byte adiciona-o ao vetor:
    serialInArray[serialCount] = inByte;
    serialCount++;

    // quando receber os 12 bytes armazena-os em buffer[i]
    if (serialCount &amp;gt; 2) {
      for(int i =0; i&amp;lt;3; i++)
      {
      buffer[i] =  serialInArray[i];
      }       
        // envia comandos caso existam
      myPort.write(comando);
      // Reset serialCount:
      serialCount = 0;
    }
  }
}

&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4511655845664655290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4511655845664655290'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/12/arduino-tcs3200d-sensor-de-cor-rgb.html' title='Arduino TCS3200D Sensor de cor RGB'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/5aFRmUhWa0Q/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-4523090156391143716</id><published>2012-09-08T12:15:00.000-07:00</published><updated>2016-12-08T15:12:26.803-08:00</updated><title type='text'>Arduino sensor de toque humano</title><content type='html'>&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/YhPUNGF_m8c&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;Tenho garimpado alguns sensores no ebay e outros sites do gênero. O problema e que muitos sensores colocados à venda têm pouca ou nenhuma documentação disponível na internet. É preciso usar de engenharia reversa pra entender seu funcionamento e usá-los bem. Esta postagem mostra um desses sensores o sensor de toque humano.&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwQq_75u7TITSiwiISD7b1iplrQ0_AwvluWMzLAEwxzYM6llLq6Vz-m3h8hdA2uc3PXrOiJ0W-1-wNu8GXSYqXnjyXHD5bxpu2YSaw97jKxm3PYUbWvikUV8G30hCwi6ePzvp82yzuLo/s1600/DSCF5823.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwQq_75u7TITSiwiISD7b1iplrQ0_AwvluWMzLAEwxzYM6llLq6Vz-m3h8hdA2uc3PXrOiJ0W-1-wNu8GXSYqXnjyXHD5bxpu2YSaw97jKxm3PYUbWvikUV8G30hCwi6ePzvp82yzuLo/s320/DSCF5823.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwQq_75u7TITSiwiISD7b1iplrQ0_AwvluWMzLAEwxzYM6llLq6Vz-m3h8hdA2uc3PXrOiJ0W-1-wNu8GXSYqXnjyXHD5bxpu2YSaw97jKxm3PYUbWvikUV8G30hCwi6ePzvp82yzuLo/s1600/DSCF5823.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwQq_75u7TITSiwiISD7b1iplrQ0_AwvluWMzLAEwxzYM6llLq6Vz-m3h8hdA2uc3PXrOiJ0W-1-wNu8GXSYqXnjyXHD5bxpu2YSaw97jKxm3PYUbWvikUV8G30hCwi6ePzvp82yzuLo/s1600/DSCF5823.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;&lt;br /&gt;
Este sensor usa o comparador LM393 e tem como elemento sensor um transistor darligton MPSA13. O segredo é que a base do transistor não está ligada a nada, fica enrolada no&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;corpo do transistor onde pode ser tocada. Ao tocar a base o transistor conduz o que através do&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;LM393&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;coloca a saída digital&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;do sensor&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;(SD) em nível alto. Nos meus testes a saída ficou&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;oscilando entre nivela alto e baixo quando o sensor era tocado. Foi preciso considerar isso na hora de programar.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;&lt;br /&gt;
O sensor também possui uma saída analógica (SA), direto do elemento sensor sem passar pelo comparador. Se ligada a uma entrada analógica do arduino, por exemplo, teremos um valor entre 1023 e 0. Na pratica, ao tocar no sensor o valor salta rapidamente de próximo do 1023 a próximo do 0. Um dos testes que fiz foi usar um pequeno pedaço de fio, como antena, conectado à base do transistor para aumentar sensibilidade. Nestes testes aproximar a mão de antena fazia aumentar o valor lido da saída analógica do sensor.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;&lt;br /&gt;
No experimento mostrado no vídeo a saída digital foi ligada no pino digital 3 do arduino. O comportamento seria idêntico ao de um botão se não fosse pelo fato da saída varia entre o nível alto e baixo, varias vezes por segundo, quando há o toque no elemento sensor. Para minimizar o esse efeito foi usado um laço. Enquanto a saída está em nível baixo o programa permanece nesse laço. Uma pequena mudança da saída para o nível alto faz o programa sair do laço e alterar o estado do pino 13 que, por sua vez controla o acendimento da lâmpada.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;&lt;br /&gt;
&lt;b&gt;Programa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;const int sensorPin = 3;
const int ledPin =  13;     

int sensorState = 0;        
int sensorState_aux = 0;    

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(sensorPin, INPUT);     
}

void loop(){

  sensorState_aux = digitalRead(sensorPin);
  delay(30);
  
  // sem ser tocado a sai­da do sensor permanece em nivel baixo
  // quand tocado a saída alterna entre nível baixo e alto
  // para eviatar ocilacões aguarda a saída ir ao nivel alto
  while( sensorState_aux != HIGH) 
  {
  sensorState_aux = digitalRead(sensorPin);
  delay(30);
  }
  //inverte o estado aterior do pino 13 do arduino
  // se HIGH passa para LOW e vice-versa
  sensorState = !sensorState;
  
  if (sensorState == HIGH) {     

    digitalWrite(ledPin, HIGH);  
  } 
  else {

    digitalWrite(ledPin, LOW); 
  }
   delay(500);
}
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4523090156391143716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4523090156391143716'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/09/arduino-sensor-de-toque-humano.html' title='Arduino sensor de toque humano'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/YhPUNGF_m8c/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-4293579332572719721</id><published>2012-08-11T15:59:00.000-07:00</published><updated>2016-12-08T15:13:50.005-08:00</updated><title type='text'>Motorizando patinete infantil</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2u-GSt057dk&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Uma postagem anterior mostrava a motorização de um carrinho de criança usando um motor de vidro elétrico, um ESC com relés tendo como &quot;celebro&quot; um
PICAXE 08M, &lt;a href=&quot;http://tecnomelque.blogspot.com/b/post-preview?token=VkZZ2TgBAAA.v1KuDCAX6pb97RicQS8AvQ.L1mwNvGwwaf_2PKAIH85IQ&amp;amp;postId=8127934330279932703&amp;amp;type=POST&quot; target=&quot;_blank&quot;&gt;veja aqui&lt;/a&gt;. Desta vez o alvo é uma patinete da Barbie, brinquedo de minha
filha de cinco anos. O motor usado, bem como as adaptações feitas no conjunto motor redutor são as
mesmas do carrinho. Como não há necessidade de ré os relés foram dispensados. A placa, usada
para controlar a velocidade tem basicamente o Picaxe, um mosfet e um regulador
de voltagem.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Adaptação mecânica&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Algumas modificações foram feitas. O eixo traseiro foi substituído por uma
barra roscada de 3/8”. Essa barra passo por dentro da engrenagem centrar do
conjunto motor redutor. Assim como no carrinho a barra é presa no motor e nas
rodas com uso de porca e contra porca. Dois pequenos pedaços de tubo de PVC
1/2&quot; foram usados para afastar as rodas da patinete. Foi feito um furo na
parte traseira para que fosse possível abrigar a placa de controle no interior da patinete e
prender o motor com auxilio de uma abraçadeira feita de chapa de alumínio.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgedMBPFaoWpx-XBVESp071rx_FlCoRFhxpkPdya2Qk4_BU9wpJtRLpGDcRV1RfWJm_9H2tP8QsfRgEaz4LiG2yucEqGFo8sqsn-otCeMr47KCD_rQdOB9MagxK55VP_Rtn-R3XYa-ofS0/s1600/DIAGRAMA.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgedMBPFaoWpx-XBVESp071rx_FlCoRFhxpkPdya2Qk4_BU9wpJtRLpGDcRV1RfWJm_9H2tP8QsfRgEaz4LiG2yucEqGFo8sqsn-otCeMr47KCD_rQdOB9MagxK55VP_Rtn-R3XYa-ofS0/s320/DIAGRAMA.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;b&gt;Parte eletroeletrônica&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYcGjh1IzcIoiDyutKUE8_s3FWI4j3kjf0HACoCIA7qlr4xp4-u4BBdlI-7c8ay9tJYKzPXV1LxMKXMERu_mHWdI-z8aXFZpbYOL0PCnVrMlgFw1LfaxAsF5DY_9dJ374EXz7U5k89Nik/s1600/Imagem1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYcGjh1IzcIoiDyutKUE8_s3FWI4j3kjf0HACoCIA7qlr4xp4-u4BBdlI-7c8ay9tJYKzPXV1LxMKXMERu_mHWdI-z8aXFZpbYOL0PCnVrMlgFw1LfaxAsF5DY_9dJ374EXz7U5k89Nik/s320/Imagem1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Ao lado é possível ver o diagrama do circuito usado para controlar a
velocidade de rotação o motor. O acelerador está representado como um potenciometro mas, na verdade, não sei o que ele realmente tem dentro. Consegui usa-ló depois de alguns testes. Dois pinos do PICAXE 08M são usados, uma como
entrada analógica para o acelerador e outro como saída PWM para o mosfet, que
aciona o motor. Um acoplador ótico é usado entre o picaxe e o mosfet. A placa
ainda possui um regulador de voltagem 7805 responsável pela alimentação do
PICAXE (5V).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;O programa&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq8NAjhDB8_OjhFbyuRco0zMS7HLpbmK2LtlIDW7mA0Papg1Q3mRlYwgg4Dc40ZAwqRGaNw28nteFyCvdUV7JbOXtsqSlghGTzSIJ3KcpcQEM4J_2CY-CL_tMeiE4I1ClnEJs7i4Aw_Xw/s1600/Imagem2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq8NAjhDB8_OjhFbyuRco0zMS7HLpbmK2LtlIDW7mA0Papg1Q3mRlYwgg4Dc40ZAwqRGaNw28nteFyCvdUV7JbOXtsqSlghGTzSIJ3KcpcQEM4J_2CY-CL_tMeiE4I1ClnEJs7i4Aw_Xw/s320/Imagem2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;O programa é extremamente simples Nele o picaxe lê o valor do acelerador através
de uma entrada analógica. Vale ressaltar que o acelerador usado aqui quando na
posição de descano envia um valor maior que zero. Depois de alguns testes
percebeu-se que 250 seria o valor suficiente para garantir que a patinete permanecesse
parada quando não houvesse acionamento do acelerador. Quando o valor é menor que
250 o programa mantém o motor parado. Quando o valor lido é maior que 250 esse
valor e usado para gerar o PWM que será aplicado ao motor através do pino 2.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol acel_value = w1

symbol motor_pin =  2

main: &lt;span style=&quot;color: blue;&quot;&gt;&#39;loop principal&lt;/span&gt;

&lt;span style=&quot;color: blue;&quot;&gt;&#39; le o valor do acelerador no pino 4 e armazena
&#39; em acel_value (w1)&lt;/span&gt;

READADC10 4, acel_value  

&lt;span style=&quot;color: blue;&quot;&gt;&#39;se o valor for menor que 250 mantem o motor parado&lt;/span&gt;

if acel_value &amp;lt; 250  then 

pwmout motor_pin,255,0

&lt;span style=&quot;color: blue;&quot;&gt;&#39;se o valor for maior que 250 aplica-o (PWM) ao motor&lt;/span&gt;

else

pwmout motor_pin,255,acel_value

endif

goto main &lt;span style=&quot;color: blue;&quot;&gt;&#39;fim do loop principal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4293579332572719721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/4293579332572719721'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/08/motorizando-patinete-infantil.html' title='Motorizando patinete infantil'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/2u-GSt057dk/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-1624831549402895800</id><published>2012-08-07T15:03:00.000-07:00</published><updated>2016-12-08T15:14:17.409-08:00</updated><title type='text'>Arduino LDR matriz</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/CwMj8z6FkTQ&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12PT;&quot;&gt;Dada a impossibilidade de usar uma câmera como sensor no arduino, pensei na possibilidade de construir uma espécie de CCD de muito baixa resolução, utilizando LDRs. Pesquisando na internet encontre &lt;a href=&quot;http://www.flickr.com/photos/74307201@N02/sets/72157630410495412/&quot; target=&quot;_blank&quot;&gt;este site&lt;/a&gt; com um excelente trabalho na criação de uma mesa com 64x64 LDRs. Decidi então construir uma pequena matriz, 3x4, para testes.&lt;/span&gt;&lt;/div&gt;
&amp;nbsp; &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVVoJTvqz2eBvUGJ7L4OeEjWvOcQKgAlX49Y6_bJYqa5VH1wpkAoGK6LP7gbyXUgWHEsDTwPCkkWIGu_mFl3yVVn27sJR2HOe9DgjuL06fTq6YWs9j1gJvbpymT-LB62Dj3BA046VHKsI/s1600/LDR.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVVoJTvqz2eBvUGJ7L4OeEjWvOcQKgAlX49Y6_bJYqa5VH1wpkAoGK6LP7gbyXUgWHEsDTwPCkkWIGu_mFl3yVVn27sJR2HOe9DgjuL06fTq6YWs9j1gJvbpymT-LB62Dj3BA046VHKsI/s320/LDR.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: 12PT;&quot;&gt;
O LDR (Light Dependent Resistor) como o próprio nome sugere é um resistor que tem sua resistência variada em função da luz que incide sobre ele. Quanto maior a luz menor a resistência. Se ligado a uma entrada analógica do arduino tem-se um valor proporcional à luz que incide sobre o LDR teoricamente entre 0 e 1024.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: 12PT; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbUYGU-dwRB6iEhbprnrxM8bQs_a1NrSDL2-9oFBVdPLBtitbW19o-eHVrDhBDaB3hGnA62lLeD1w5_8wUlCzIiIoiM_N_LbIM3N10xPyqxaL33GDRNcTwcN6_2a3ZSRCkcLtCbDMUdPY/s1600/LDR_matriz.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbUYGU-dwRB6iEhbprnrxM8bQs_a1NrSDL2-9oFBVdPLBtitbW19o-eHVrDhBDaB3hGnA62lLeD1w5_8wUlCzIiIoiM_N_LbIM3N10xPyqxaL33GDRNcTwcN6_2a3ZSRCkcLtCbDMUdPY/s320/LDR_matriz.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;A ideia principal é ler através da porta analógica do Arduino cada LDR e enviar esses valores ao processig que, pro sua vez usa estes valores para determinas o tom de cinza de um retângulo formado por doze quadrados, cada um corresponde ao LDR na mesma posição.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAFtbG6_jtTlkuGsIesgrqKyNF5FqUeKSgMsBX3E2j1CxK2FUO5cKPznbT7n9iSSYOfKpNL9TbK2CIqCpM2pWXMY2PYx83MEdGBOuxmXAq0G_Yzk31fvYYsmBmAsXPrBzflSeY3F40nw0/s1600/Apresenta%C3%A7%C3%A3o1.png&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAFtbG6_jtTlkuGsIesgrqKyNF5FqUeKSgMsBX3E2j1CxK2FUO5cKPznbT7n9iSSYOfKpNL9TbK2CIqCpM2pWXMY2PYx83MEdGBOuxmXAq0G_Yzk31fvYYsmBmAsXPrBzflSeY3F40nw0/s320/Apresenta%C3%A7%C3%A3o1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;Ao lado é mostrado o diagrama dos LDRs e uma animação que ilustra como a leitura é feita na matriz. Coloca-se o pino 2 em nível alto e procede a leitura das entradas analógicas A0, A1, A2 e A3 armazenado os valores nas variáveis correspondentes ao primeiro, segundo, terceiro e quarto LDRs o mesmo acontece na segunda linha, pino 3, LDRs cinco a oito e na terceira linha, pino 4. LDRs nove a doze. &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 12pt;&quot;&gt;A montagem foi feita em uma placa perfurada
padrão. Os diodos são 1N4148, mas podem ser substituídos por equivalentes. Eles
são responsáveis em garantir que um LDR não interfira na leitura de outro. Os
resistires são de 10 kohm.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: 12PT; text-align: justify;&quot;&gt;
Os programas foram baseados no exemplo SerialCallResponse que acompanha a IDE do Arduino. O exemplo ensina como enviar bytes do arduino a processing e do processing ao arduino. No programa abaixo o arduino envia 12 bytes, um para cada valor lido nos LDRs. Antes de ser enviado o valor é ajustado para um valor entre 0 e 255. O processing recebe os bytes e usa-os para determinar o tom de cinza do quadrado correspondente.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;Programa para o arduino:&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(240, 240, 240) none repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; const int ldr[4] = {A0, A1, A2, A3};  
 const int vccPin[3] = {2,3,4};  
 int ldrValue;  
 void setup() {  
  Serial.begin(19200);  
  pinMode(vccPin[0], OUTPUT);   
  pinMode(vccPin[1], OUTPUT);   
  pinMode(vccPin[2], OUTPUT);   
  estabeleceContato(); // Envia um byte &quot;A&quot; ate obter resposta do processing   
 }  
 void loop() {  
   for(int i = 0; i &amp;lt; 3; i++)  
   {  
    digitalWrite( vccPin[i],HIGH);  
      for(int j = 0; j &amp;lt; 4; j++)  
      {  
       ldrValue = analogRead(ldr[j]);  // le o LDR correspondente  
       ldrValue = constrain(ldrValue, 0, 800); // ajusta valor lido  
       ldrValue = map(ldrValue,0,800,0,255);  // ajusta valor lido  
       Serial.write(ldrValue); // envia valor via porta serial   
      }  
    digitalWrite( vccPin[i],LOW);  
   }           
 } // fim do loop principal  
 void estabeleceContato() {  
   while (Serial.available() &amp;lt;= 0) {  
   Serial.write(&#39;A&#39;);  // envia A ate estabelecer contato  
   delay(300);  
  }  
  }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;b style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Programa para o Processing:&lt;/b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAFtbG6_jtTlkuGsIesgrqKyNF5FqUeKSgMsBX3E2j1CxK2FUO5cKPznbT7n9iSSYOfKpNL9TbK2CIqCpM2pWXMY2PYx83MEdGBOuxmXAq0G_Yzk31fvYYsmBmAsXPrBzflSeY3F40nw0/s1600/Apresenta%C3%A7%C3%A3o1.png&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt; 
&lt;br /&gt;
&lt;pre style=&quot;-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(240, 240, 240) none repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; // Adaptado do exemplo SerialCallResponse que acompanha a IDE do Arduino  
 import processing.serial.*;  
  int comando =0;  
  int y_01 = 55;  
 Serial myPort; // porta serial  
 int[] serialInArray = new int[12]; // vetor para armazenar o valores recebidos  
 int serialCount = 0;      // usado para contar o numero de bytes recebidos  
 int[] buffer = new int[12];  
 boolean firstContact = false; // Whether we&#39;ve heard from the microcontroller  
 void setup() {  
  // imprime a lista de portas seriais  
  println(Serial.list());  
  String portName = Serial.list()[0];  
  // substituir COM9 pela porta onde esta o Arduino  
  myPort = new Serial(this, &quot;COM9&quot;, 19200);   
  size(800, 600); //janela, largura, altura  
  background(0);  
  smooth();  
 }  
 void draw() {  
   stroke(255); // borda   
   fill(buffer[0]);    // determina a cor     
   rect(0, 0, 200, 200); // desenha o quadrado 1  
              // posicao x, posicao y, largura , altura  
   fill(buffer[1]);     
   rect(200, 0, 200, 200);   
   fill(buffer[2]);     
   rect(400, 0, 200, 200);    
   fill(buffer[3]);      
   rect(600, 0, 200, 200);    
   fill(buffer[4]);      
   rect(0, 200, 200, 200);   
   fill(buffer[5]);       
   rect(200, 200, 200, 200);    
   fill(buffer[6]);    
   rect(400, 200, 200, 200);  
   fill(buffer[7]);     
   rect(600, 200, 200, 200);  
   fill(buffer[8]);        
   rect(0, 400, 200, 200);   
   fill(buffer[9]);         
   rect(200, 400, 200, 200);  
   fill(buffer[10]);     
   rect(400, 400, 200, 200);  
   fill(buffer[11]);      
   rect(600, 400, 200, 200);   
 }  
 void serialEvent(Serial myPort) {  
  // le os bytes da porta serial  
  int inByte = myPort.read();  
  // se receber o primeiro byte e for &#39;A&#39;  
  if (firstContact == false) {  
   if (inByte == &#39;A&#39;) {   
    myPort.clear();    // Limpa o buffer da porta serial  
    firstContact = true; // o primeiro contato ja ocorreu  
    myPort.write(&#39;A&#39;);  // envia &quot;A&quot; para que o arduino   
               // reconheça o primeiro contato  
   }   
  }   
  else {  
   // se não for o primeiro byte adiciona-o ao vetor:  
   serialInArray[serialCount] = inByte;  
   serialCount++;  
   // quando receber os 12 bytes armazena-os em buffer[i]  
   if (serialCount &amp;gt; 11) {  
    for(int i =0; i&amp;lt;12; i++)  
    {  
    buffer[i] = serialInArray[i];  
    }      
     // envia comandos caso existam  
    myPort.write(comando);  
    // Reset serialCount:  
    serialCount = 0;  
   }  
  }  
 }  
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1624831549402895800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1624831549402895800'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/08/arduino-ldr-matriz.html' title='Arduino LDR matriz'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/CwMj8z6FkTQ/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-3688561507593526385</id><published>2012-07-12T19:47:00.001-07:00</published><updated>2016-12-08T15:15:07.411-08:00</updated><title type='text'>Robô de sumô 500g</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/UszQmj4yJfs&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;


&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuI21WFJHJbpX37fPIRIoddFtdZJ9W7LWYeZdKI5B7vsNHuGX1UP8lav9Pfm7PPxh5fTzOh7K2jdPTQjMjGbZ9y-ehS-_SlSDh52JM8YfnTdmFg0eIeDHK6c3oO7mdSqFrCLNHizd65uE/s1600/sensor+sharp.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;O robô mostrado aqui foi construído para participar de campeonato de sumô de robôs na categoria quinhentas gramas. Neste tipo de competição o robô deve mover-se dentro de uma arena preta com bordas brancas procurando seu oponente para empurra-lo para fora da arena. Na categoria do Eniac Jr., como foi batizado, além de não poder pesar mais que quinhentos gramas, o robô não deve ter largura e comprimento superiores a 10 cm.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;A estrutura &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;A estrutura é composta basicamente por duas placas de compensado 4 mm e quatro pedaços de barra roscada de 4mm de diâmetro e 9cm de comprimento. Na primeira plataforma (8cm x 6 cm) estão os servo motores, presos por abraçadeiras, e os sensores de linha. Na segunda (10cm x 8 cm), o arduino com uma sensorshield, que é a placa sobre o arduino, usada para facilitar a conexão dos sensores e servos, o UBEC (regulador 5V x 5A), é necessário pro que os servos são forçados e não é conveniente alimenta-los diretamente pelo arduino. O sensor de oponente e demais componentes eletrônicos também estão na segunda plataforma.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;Apenas duas rodas são usadas. Foram adaptadas do rolo de tração de uma velha impressora. Uma pequena chapa de alumínio substitui a roda frontal.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;A eletrônica&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; font-family: Arial,Helvetica,sans-serif; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLH1dVfbM0uUR2J2vxzfyiW5y6X8f4ZMAjKGi-g9S0OaGC31Qz2wYHqBMGV1DnNK2rLmMQvYYjpD2J0x45qw__V1Zk20Z8HE3GduP_ZGUUDy95GXLGp1tPMp8smmcUBD76IPwaxheRja4/s1600/sensor+de+linha.jpg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLH1dVfbM0uUR2J2vxzfyiW5y6X8f4ZMAjKGi-g9S0OaGC31Qz2wYHqBMGV1DnNK2rLmMQvYYjpD2J0x45qw__V1Zk20Z8HE3GduP_ZGUUDy95GXLGp1tPMp8smmcUBD76IPwaxheRja4/s320/sensor+de+linha.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Sensor de linha&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SBQnSq6EQTQun-Nll3IWJvZIC9UM5W45zWfDaZU5BhjUaYYeylVEOuAMRiJADyeBsxxUHgABV1d6LaBr2rgifT-K0cGgAApLBUzZ4FpCertGIQMiqpT3JcD3cDhCSLvrASVgVxMW0TI/s1600/DSCF5486.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SBQnSq6EQTQun-Nll3IWJvZIC9UM5W45zWfDaZU5BhjUaYYeylVEOuAMRiJADyeBsxxUHgABV1d6LaBr2rgifT-K0cGgAApLBUzZ4FpCertGIQMiqpT3JcD3cDhCSLvrASVgVxMW0TI/s320/DSCF5486.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNRgjQsA5M91eGgIXeB2hoEN2qQsqzdt4oW9gfb65tbxA3LLZ-zML01h3oMXJQSt2yT3nL_-W037F2y2xAZ9IFhHw8KvKCmT-Eeta6a1EgsiXDGP7Vcn7XvvSigo5j75r8e0E3RYahZJI/s1600/DSCF5489.JPG&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNRgjQsA5M91eGgIXeB2hoEN2qQsqzdt4oW9gfb65tbxA3LLZ-zML01h3oMXJQSt2yT3nL_-W037F2y2xAZ9IFhHw8KvKCmT-Eeta6a1EgsiXDGP7Vcn7XvvSigo5j75r8e0E3RYahZJI/s320/DSCF5489.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpuJJb6gYkpcU54Tl_ZZVGyuAzDx9620d1yoC0HPDWhheyKFv8hwAYiBr10urAAu9nWxC7RxZBx92FU2Y8ZtupDQBLd2ZUT0wVoJ9an6nw-Xyqpw-dnV76-HdSGTYqGU3VDlzWMlvOpOU/s1600/DSCF5491.JPG&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpuJJb6gYkpcU54Tl_ZZVGyuAzDx9620d1yoC0HPDWhheyKFv8hwAYiBr10urAAu9nWxC7RxZBx92FU2Y8ZtupDQBLd2ZUT0wVoJ9an6nw-Xyqpw-dnV76-HdSGTYqGU3VDlzWMlvOpOU/s320/DSCF5491.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;Os motores usados são servomotores modificados para rotação. Usar servos trás a vantagens deles já possuirem circuito de acionamento interno, necessitando apenas do sinal de controle e alimentação que neste caso e de 5 V/ 5A, provida por um UBEC (Universal Battery Eliminator Circuit). A bateria usada é uma LIPO 3 células 1300 mAh.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;Sensores&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;O Eniac Jr possui quatro sensores. Tanto os dois sensores de linha frontal quanto o sensor de linha traseira, que não está sensdo usado por ainda não ser necessário no programa, foram montados conforme digrama ao lado.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;O quarto sensor é usado para detectar o oponente. Trada-se de um sensor infravermelho sharp GP2Y0A21. Um excelente sensor para este tipo de aplicação por sua velocidade e facilidade de uso.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;O microcontrolador&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;Para controlar o robô foi escolhido o arduino, uma plataforma excepcional por sua capacidade, versatilidade e enorme quantidade de material de consulta. Este projeto está usando o arduino Uno, equipado com o atmega 328, o mais comumente usado hoje. Talvez fosse melhor usar o arduino mini 3.0 por seu tamanho reduzido.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;O código fonte que embarca o arduino pode ser visto, com comentários, abaixo. É um programa básico pretendo incrementa-lo. A dinâmica de funcionamento é a seguinte:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: 12pt; line-height: 18px;&quot;&gt;Depois de ligado o robô aguada cinco segundos e inicia seu funcionamento andando para frete. Caso encontre a linha branca retorna e gira em torno de si mesmo procurando o oponente com auxilio do sensor frontal. Se encontrar o oponente o robô para de girar e volta a andar para frete. Não encontrando o adversário ele anda para frente após o fim do tempo de procura.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUb5HDCc-v0EUeQPRsGQVWrqPKePNHt1kxTH1nQybIVa0APaAsFID548RKmvkUkoJbfa9Fy_HeuzikvtQPQ9oRmDhURJDbZye1WpnWUfeuwTHcc2LwjNb9WdamKn2zlqZ5vGgHQWnUA9ql/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;  #include &amp;lt;Servo.h&amp;gt;  
  Servo esquerdo;   
  Servo direito;   
  //******************* PINOS **********************//  
  int direito_pin = 10;  
  int esquerdo_pin = 11;  
  int SLF_esq = 8;  // pino do sensor de linha frontal esquerdo  
  int SLF_dir = 9;  // pino do sensor de linha frontal direito  
  int led_pin = 13;  // led no pino 13  
  int sens_front = 5; // pino do sensor oponente frontal (SHARP)( pino analogico 0 )  
 //****************** VARIAVEIS ******************//  
  long cm;    // variaveis para sensor frontal  
  float sharp = 0;  // usada na leitura dos sensores analogicos  
  float distancia = 0; // usada na leitura dos sensores analogicos  
  int tmp_Re = 5;  // tempo de reversão dos motores quando o robo encontra a linha*200 milissegundos  
  int tmp_Busc =3.4; // tempo de procura do adverssario, girando, em segundos  
  long raio_front = 35; // raio de procura frontal em centimetros  
  long tmpRound = 90000;  // tempo do round 90.000 milissegundos. 1 minuto e 30 segundos  
  long prev_tmpRound;  // variavel para contar tempo do round  
  unsigned long current_tmpRound; // variavel para contar tempo do round  
  long previousMillis;  // variavel para contar tempo entre buscas  
  unsigned long currentMillis; // variavel para contar tempo entre buscas  
  int aux_SLF = 0; // auxiliar para leitura do sensor de linha frontal  
  int aux_SLT = LOW; //0; // auxiliar para leitura do sensor de linha traseiro  
  int aux_front = 0;  // auxiliar para leitura do sensor frontal  
 //**************** SETUP *****************************//  
 void setup() {   
  Serial.begin(19200);   
  pinMode(led_pin, OUTPUT);  
  pinMode(SLF_esq, INPUT);  
  pinMode(SLF_dir, INPUT);  
 // conta os cinco segundos piscando o led do pin 13  
  for(int conte = 0; conte &amp;lt; 5; conte++)   
  {  
   digitalWrite(led_pin, HIGH);  
   delay(300);  
    digitalWrite(led_pin, LOW);  
   delay(700);  
  }  
  esquerdo.attach(esquerdo_pin,1000,2000);  //servo1 no pino 2, min, max  
  direito.attach(direito_pin,1000,2000);  //servo1 no pino 3   
  prev_tmpRound = millis();  // prev_tmpRound recebe o tempo atua de execução do programa marcando a contagem do round  
  current_tmpRound = millis();  
  // procurar(); // inicia procurando o oponente  
 }  
 //***************** FIM SETUP ****************************//  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  ///////////////////////////////////////////////FUNÇÃO PRINCIPAL///////////////////////////////////////////////////////////////////  
 void loop()   
 {  
  int a1 =0;  
  int proc = 0;  
  int cnt =0;  
  int cnt_tmp =0;  
  static int direcao = LOW;  
  frente();  
  aux_SLF = ler_digital(SLF_esq , SLF_dir); // verifica sensor frontal de linha ( HIGH para branco LOW para preto)  
 // aqui o robo comeca efetivamente seu trabalho andar no tatame a procurar o oponente   
 // ele para apos 90 segundos (tempo do round)  
  do    
  {     
   if(aux_SLF == HIGH) // se um dos sensores de linha dianteiros encontrou a linha branca  
    {  
      re();  
      while(cnt_tmp &amp;lt; tmp_Re*4)  
      {  
       delay(50);  
       cnt_tmp++;  
      }  
      cnt_tmp =0;  
      procurar();  
    }  
   else  
    {  
    frente(); //se nenhum dos sensores for acionado continua indo em frente  
    }  
     aux_SLF = ler_digital(SLF_esq , SLF_dir); // verifica sensor frontal de linha ( HIGH para branco LOW para preto)  
  current_tmpRound = millis(); // atualisa current_tmpRound com o tempo atua de execução do programa  
   }while(current_tmpRound - prev_tmpRound &amp;lt;= tmpRound);//O ROBO ANDA ATE SE PASSAR O TEMPO DE UM ROUND  
   parar(999999); // para o robo após fim do round  
 } // fim do void loop()  
 ///////////////////FUNÇÃO PARAR /////////////////////  
 // como a modificação dos servos não ficou 100% é dificil para-los totalmente  
 void parar(int time)  
 {  
   direito.write(92.5);  
   esquerdo.write(89.5);  
   delay(time);  
 }  
 ///////////////////FUNÇÃO FRENTE /////////////////////  
 void frente()  
 {  
   direito.write(0);  
   esquerdo.write(180);  
 }  
 ///////////////////FUNÇÃO RÉ /////////////////////  
 void re()  
 {  
   direito.write(180);  
   esquerdo.write(0);  
 }  
 ///////////////////FUNÇÃO DIREITA /////////////////////  
 void direita()  
 {  
   direito.write(180);  
   esquerdo.write(180);  
 }  
 ///////////////////FUNÇÃO ESQUERDA /////////////////////  
 void esquerda()  
 {  
   direito.write(0);  
   esquerdo.write(0);  
 }  
 ///////////////////FUNÇÃO ler sensores analogicos sharp/////////////////////  
 // adaptada de:  
 /* www.ebay.com/itm/5-x-Arduino-IR-Sensor-GP2Y0A21YK0F-Measuring-Detecting-Distance-  
 10-80cm-/261031972852?_trksid=p4340.m263&amp;amp;_trkparms=algo%3DSIC%26its%3DI%252BC%26itu%3DUCI%  
 252BIA%252BUA%252BFICS%252BUFI%26otn%3D15%26pmod%3D260944545770%26ps%3D63%26clkid%3D56665851  
 1840405440&amp;amp;_qi=RTM1062687 */  
 int ler_analog(int sensor, int raio)  
 {  
  sharp = analogRead(sensor);   
  distancia = (6762/(sharp-9))-4;  
  if(distancia &amp;lt;= raio)  
  {  
  digitalWrite(led_pin, HIGH);   
  return(HIGH); // retorna HIGH caso o opnente esteja dentro do raio de alcance definido  
  }  
  else  
  {  
  digitalWrite(led_pin, LOW);  
  return(LOW); // retorna LOW caso o opnente NÃO esteja dentro do raio de alcance definido  
  }  
 }  
 ///////////////////FUNÇÃO ler sensores digitais /////////////////////  
 int ler_digital(int sens1 , int sens2)  
 {  
  if(digitalRead(sens1) == LOW || digitalRead(sens2) == LOW)  
  return(HIGH);  
  else  
  return(LOW);  
 }  
 ////função procura oponete chamada depois que o robo encontra a linha e da re/////////////////////////////  
  void procurar()  
  {  
   int cnt1 =0;  
   int a =0;  
   static int direcao = LOW;  
   static int aux_sFront_ant = LOW;  
   static int aux_sFront = LOW;  
  previousMillis = millis();  
  currentMillis = millis();  
     aux_front = ler_analog(sens_front, raio_front); // verifica sensor procura frontal  
     aux_SLF = ler_digital(SLF_esq , SLF_dir); // verifica sensor frontal de linha ( HIGH para branco LOW para preto)  
  while(currentMillis - previousMillis &amp;lt;= (tmp_Busc * 1000) &amp;amp;&amp;amp; aux_SLF != HIGH &amp;amp;&amp;amp; aux_front != HIGH)  
  {  
   direita();  
   delay(30);  
  currentMillis = millis();  
  aux_front = ler_analog(sens_front, raio_front); // verifica sensor procura frontal  
  aux_SLF = ler_digital(SLF_esq , SLF_dir); // verifica sensor frontal de linha ( HIGH para branco LOW para preto)  
  }  
  }  
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/3688561507593526385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/3688561507593526385'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/07/robo-de-sumo-500g.html' title='Robô de sumô 500g'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/UszQmj4yJfs/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-8785452211989027142</id><published>2012-05-15T20:05:00.000-07:00</published><updated>2016-12-08T15:15:25.885-08:00</updated><title type='text'>delay x millis no Arduino</title><content type='html'>&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;A
função delay&lt;/b&gt;&lt;b&gt;
&lt;/b&gt;é muito usada em
programas para o arduino. É uma função simples e útil quando queremos pausa a
execução de um programa pelo arduino.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;O
funcionamento dela é simples:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Imagine
duas crianças brincando de esconder. A criança que conta deve ficar parada
apenas contando até cem, por exemplo, para depois procurar a outra criança. A
função delay(tempo e microssegundos) tem funcionamento similar o
microcontrolado interrompe a execução do programa até o final do tempo determinado. Nem
sempre é aceitável&amp;nbsp; esperar o microcontrolador&amp;nbsp; fazer a contagem de
tempo através da função delay().&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhECVR2E3rnL1UJCzDXtpAv1x5IiDHItBTsR_GTurHeKjB9TOppYW-cIIw08Jq8XInqrLTGT1-uYEeda8fiezU5Cf_YfLm06VNv0w4sKFuPyahNt5M7c0UjK9jI8Sz3wKMr0bqq61TTKfU/s1600/Apresenta%C3%A7%C3%A3o1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhECVR2E3rnL1UJCzDXtpAv1x5IiDHItBTsR_GTurHeKjB9TOppYW-cIIw08Jq8XInqrLTGT1-uYEeda8fiezU5Cf_YfLm06VNv0w4sKFuPyahNt5M7c0UjK9jI8Sz3wKMr0bqq61TTKfU/s320/Apresenta%C3%A7%C3%A3o1.png&quot; width=&quot;288&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;A
função millis&lt;/b&gt; retorna
o tempo de execução do programa até o momento em que ela é chamada. Como
exemplo suponha que uma pessoa tem que falar por quinze minutos. Não seria possível
contar e falar ao mesmo tempo então ela verifica a hora de inicio em um relógio
e durante a palestra verifica novamente a hora subtrai a hora de inicio a fim
de saber se já passaram os quinze minutos. Por exemplo, se a pessoa iniciou às 17h45min
e olha o relógio às 17h55min saberá que ainda não passou 15 minutos, pois 17h55min
- 17h45min = 10 minutos menor que 15. Mas se quando olhar para o relógio o
palestrante e verificar que são 18h01min intenderá que é hora de parar já que 18h01min
- 17h45min = 16 minutos que é obviamente maior que 15. Perceba que tanto faz
verificar o tempo de inicio somar o tempo de duração do evento e verificar
periodicamente se o tempo&amp;nbsp; final resultante da soma já&amp;nbsp; foi alcançado
ou subtrair a cada período o tempo atual do tempo de inicio e comparar com o
tempo de duração.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;A
função millis pode ser entendida como o relógio do exemplo acima. Sabendo-se
que o programa começa a rodar no tempo 0 ms, se depois de um segundo chamarmos
a função mills ela retornará 1000.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;sans-serif&amp;quot;;&quot;&gt;No
programa abaixo, baseado no exemplo &quot;Blink without Delay&quot; que
acompanha a interface de programação do arduino, enquanto aguardo o intervalo
de um segundo entre as piscada do led no pino 13 o arduino imprime na tela do
terminal &quot;lendo sensor&quot; o que poderia ser substituído por uma leitura
real de um sensor ou outro tipo de ação.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;int ledPin =  13;       // pino onde esta ligado o LED
int ledState = LOW;     // ledState usado para amazena o estado atual do led aceso o apagado
long intervalo = 1000;  // intervalo de um segundo
  
void setup() 
{
  pinMode(ledPin, OUTPUT); 
  Serial.begin(9600);      
}

void loop()
{
   long previousMillis = millis();
   int cnt=0;
   
    if (ledState == LOW)     // se o led estava apagado
        ledState = HIGH;    //
    else                   // se o led estava aceso
        ledState = LOW;   //

    digitalWrite(ledPin, ledState);
       
    // Mantem o led aceso ou apagado por um segundo
  while(millis() - previousMillis &amp;lt; intervalo) 
  {
       // pode-se fazer muita coisa dentro deste laço enquanto aguarda o final do tempo para mudar o estad do led
       // ler um sensor ou algo parecido, por exemplo
       if (cnt % 100 == 0)
       {
       Serial.print(&quot;Lendo sensor&quot;); 
       Serial.print(&quot; \n &quot;);
       }
       cnt++;
  }

}
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8785452211989027142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8785452211989027142'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/05/delay-x-millis-no-arduino.html' title='delay x millis no Arduino'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhECVR2E3rnL1UJCzDXtpAv1x5IiDHItBTsR_GTurHeKjB9TOppYW-cIIw08Jq8XInqrLTGT1-uYEeda8fiezU5Cf_YfLm06VNv0w4sKFuPyahNt5M7c0UjK9jI8Sz3wKMr0bqq61TTKfU/s72-c/Apresenta%C3%A7%C3%A3o1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-5256462118487720144</id><published>2012-04-06T08:49:00.001-07:00</published><updated>2016-12-08T15:15:55.479-08:00</updated><title type='text'>Arduino comando por voz</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;378&quot; mozallowfullscreen=&quot;&quot; src=&quot;https://player.vimeo.com/video/39892458?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; webkitallowfullscreen=&quot;&quot; width=&quot;504&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;

--&amp;gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Um
dia desses fuçando o Ebay encontrei um módulo de comando por voz baseado no CI
SPCE061A. Ele é capaz de armazenar até 15 comandos divididos em 3 bancos de 5
comandos. No projeto descrito aqui foram gravados cinco comandos no banco
&quot;1&quot; com a finalidade de controlar o acendimento, apagamento e frequência
de piscada de uma lâmpada comum ligada ao pino 13 do arduino através de um
módulo de força baseado em um triac.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;A
comunicação com o módulo é&amp;nbsp; feita via interface serial. As mensagens de
comando devem ser formadas pela chave 0xAA seguida do comando propriamente
dito. Para gravar o banco um, por exemplo, basta envia via terminal o valor em
0xAA seguido do comando 0x11 (é sempre bom lembra que o &quot;0x&quot; informa
que o número que o segue esta em hexadecimal) e, seguindo as mensagens de
retorno no terminal ou observando os dois leds na placa,&amp;nbsp; pronunciar e
repetir cada um dos cinco comandos desejados para o banco em questão.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Após
a gravação é possível acessar o banco 1 através do comando 0xAA + 0x21 que
serve para importar o banco 01. Importar, neste caso, é ativar um determinado
grupo de comandos, pois apenas um dos grupos pode estar ativo por vês. Isso faz
com que o módulo compare o comando falado com os cinco gravados naquele banco.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0ggDZOY76ovWUPH6mFw9hgGp7DbXZ7ZWKJGK2dWIr4WFx8sJKAES7vpzYCDxlvcbv2g3teYDmQr_zvqoNKrVFWkWASW_JovXLQW5lVi2aJ7O86jcUsJH13jDYAZpF_b5CuqIuceh81H8/s1600/foto2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0ggDZOY76ovWUPH6mFw9hgGp7DbXZ7ZWKJGK2dWIr4WFx8sJKAES7vpzYCDxlvcbv2g3teYDmQr_zvqoNKrVFWkWASW_JovXLQW5lVi2aJ7O86jcUsJH13jDYAZpF_b5CuqIuceh81H8/s320/foto2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;O manual do modulo pode ser encontrado &lt;a href=&quot;http://www.elechouse.com/elechouse/images/product/Voice%20Recognition%20Module/Manual.pdf&quot; target=&quot;_blank&quot;&gt;aqui. &lt;/a&gt;Ele é bastante completo inclusive indica um programa gratuito para &lt;/span&gt;&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
--&amp;gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;comunicação &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;serial, o AccessPort que pode ser baixado &lt;a href=&quot;http://www.sudt.com/en/ap/download.htm&quot; target=&quot;_blank&quot;&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4mjw9ou7yCpC7MC2uehXjv38ZhQK8E6_7b5XkqAl98xzO9jv56ce4BpUJJ50ykKTnR7ADzxghR699fVV_2t0gKIwBTxH5KyHYEARC1zO_R7iU8K5xIDZbQObFDObs4BtPEzC_O4rTfI/s1600/foto1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4mjw9ou7yCpC7MC2uehXjv38ZhQK8E6_7b5XkqAl98xzO9jv56ce4BpUJJ50ykKTnR7ADzxghR699fVV_2t0gKIwBTxH5KyHYEARC1zO_R7iU8K5xIDZbQObFDObs4BtPEzC_O4rTfI/s320/foto1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Resumidamente para fazer funcionar o módulo com o
arduino deve-se:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;1. Selecionar a velocidade de comunicação serial
enviando, por exemplo, o comando &quot;AA34&quot; para 19200bps ou
&quot;AA33&quot; para 9600bps. Por padrão a velocidade é 9600;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;2. Selecionar o modo de comunicação: modo comum
ou compacto. O modo determina se o módulo irá responder aos comandos com
respostas longas (mensagens) ou curtas (hexadecimal);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;3. Iniciar a gravação de um dos três bancos
enviando o comando correspondente &quot;AA11&quot; para gravar o banco um
&quot;AA12&quot; para o dois ou &quot;AA13&quot; para o banco três.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
&lt;/div&gt;
--&amp;gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Ao iniciar a gravação do banco um, por exemplo, o
módulo irá solicitar os cinco comandos&amp;nbsp; de voz que deverão ser pronunciados
e repetidos conforme mensagens de solicitação. Estes comandos de voz são
associados a&amp;nbsp; números. No banco um os números 0x11, 0x12, 0x13, 0x14 e
0x15 são associados aos comandos de voz um a cinco respectivamente. Sendo que o
comando de voz um é o primeiro que foi gravado no banco&amp;nbsp; e assim
sucessivamente. Se um banco é ativado e o módulo recebe um comando de voz
válido ele envia o valor correspondente via serial.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Quando um comando de gravação é enviado através
do terminal, por exemplo, o modulo enviará um das seguintes respostas em
hexadecimal ou em texto:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;table bgcolor=&quot;Black&quot; border=&quot;1&quot; bordercolor=&quot;White&quot; cellpadding=&quot;4&quot; cellspacing=&quot;4&quot; style=&quot;height: 100px; width: 500px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;&quot;ERRO&lt;/b&gt;&lt;b&gt;R! \ n&quot;  (0xe0)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Erro de instru&lt;/b&gt;&lt;b&gt;ção &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&quot;&lt;b&gt;START \ n&quot;   (0x40)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Pronto para gravar &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&quot;&lt;b&gt;No voice \ n&quot; (0x41)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Não detectada voz &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;&quot;Again \ n&quot;     (0x42)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Repita a instrução&amp;nbsp; ( após proximo &quot;START&quot;) &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&quot;&lt;b&gt;Too loud \ n&quot;  (0x43)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Muito alto para gravar &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;&quot;Different \ n&lt;/b&gt;&lt;b&gt;&quot;  (0x44)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Repetição da instrução diferente da primera aguarde o START para repetir o comando de voz &lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;&quot;Finish one \ n&quot; (0x45)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Uma instrução gravada com sucesso. O proximo START é para o comando de voz seguinte. Isso se repete até o quinto 

comando  &lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;&quot;Group1 finished! \ n&quot; (0x46) &lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;b&gt;Fim da gravação do grupo 1 &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;

--&amp;gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;É possível também acompanhar as mensagens
através dos dois leds existentes no módulo. O que torna possível, por exemplo,
gravar um banco comunicando-se com o modulo através do arduino sem o auxilio de
um computador. Os detalhes para isso estão no&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.elechouse.com/elechouse/images/product/Voice%20Recognition%20Module/Manual.pdf&quot; target=&quot;_blank&quot;&gt;manual&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:13.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;No programa, mostrado abaixo, o arduino inicializa
o banco 1 e fica aguardando o comando enviado pelo modulo que por sua vez aguarda
comandos de voz compatíveis com os gravados.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;/*
 comandos de voz:
 
 1 - liga
 2 - desliga
 3 - pisca
 4 - mais
 5 - menos
 
 */

#include &amp;lt;Servo.h&amp;gt; 

long dist = 0;

int lampState = LOW;   

long previousMillis = 0;  
long intervalo = 1000; 
unsigned long currentMillis;

int lampada =13;
byte com = 0; 

void setup()
{
  

Serial.begin(9600);

pinMode(lampada, OUTPUT);

delay(2000);

// O modulo aceita comandos, em hexadecimal no seguinte formato:
// AA + comando 
Serial.write(0xAA); 
Serial.write(0x37); //configura o modulo para responder em modo compacto
delay(1000);        // no modo compacto as respostas são numeros em hexadecimal
Serial.write(0xAA);
Serial.write(0x21);//importa o grupo 1


}

void loop() // inicio do programa principal
{
  

while(Serial.available())
{
com = Serial.read();  //recebe o byte referente ao comando

if(com == 0x11) // ao recxeber o comando de voz &quot;liga&quot; o modulo envia o valor em hexadecimal: 11
digitalWrite(lampada, HIGH); // se receber 0x11 acende a lampada

if(com == 0x12) // ao recxeber o comando de voz &quot;desiga&quot; o modulo envia o valor em hexadecimal: 12
digitalWrite(lampada, LOW);// se receber 0x12 apaga a lampada

if(com == 0x13)// ao recxeber o comando de voz &quot;pisca&quot; o modulo envia o valor em hexadecimal: 13
{
 do  // se receber 0x13 entra neste laço que faz a lamada piscar. Aqui existem tres possibilidades:
     // Receber 0x14 &quot;mais&quot; e aumentar o intervalo entre as piscadas
     // Receber 0x15 &quot;menos&quot; e diminuir o intervalo entre as piscadas
     // Receber 0x11 (liga) 0u 0x12 (desliga) parar de piscar e fazer o que o comando pede
  {

   com = Serial.read();  //recebe o byte referente ao comando
    
     // piscar sem delay
       currentMillis = millis(); //armazena o valor referente ao tempo de execução do programa
        if(currentMillis - previousMillis &amp;gt; intervalo) 
         {   
          previousMillis = currentMillis;   

          if (lampState == LOW)
             lampState = HIGH;
          else
            lampState = LOW;

          digitalWrite(lampada, lampState);
         }
     //
    
    // se receber 0x14 aumenta o intervalo entre as piscadas   
    if(com == 0x14 &amp;amp;&amp;amp; intervalo &amp;lt; 1000) 
    {
    intervalo +=100;
    }
    // se receber 0x14 diminue o intervalo entre as piscadas 
    if(com == 0x15 &amp;amp;&amp;amp; intervalo &amp;gt; 100)
    {
    intervalo -=100;
    }
   
  // se receber 0x11 (liga) 0u 0x12 (desliga) para de piscar
  }while(com != 0x11 &amp;amp;&amp;amp; com != 0x12);
}
}
}


&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5256462118487720144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/5256462118487720144'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2012/04/arduino-comando-por-voz.html' title='Arduino comando por voz'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0ggDZOY76ovWUPH6mFw9hgGp7DbXZ7ZWKJGK2dWIr4WFx8sJKAES7vpzYCDxlvcbv2g3teYDmQr_zvqoNKrVFWkWASW_JovXLQW5lVi2aJ7O86jcUsJH13jDYAZpF_b5CuqIuceh81H8/s72-c/foto2.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-8127934330279932703</id><published>2011-12-22T18:19:00.000-08:00</published><updated>2016-12-08T15:16:20.818-08:00</updated><title type='text'>ESC com relés e controle remoto  2.4 GHz em carro infantil</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:595.3pt 841.9pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:35.4pt;
 mso-footer-margin:35.4pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dw4WrR1KqQGN_rRiJ8uBr_DsYWogz3sDaan6LL8G3ermvfS5VQ3MwKbdukUiutk_Ho2rYIQicqRjF8C7Rf3Mw&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
Minha filha mais nova tem um ano e meio. Comprei para ela um
carrinho que tinha uns pedais péssimos de pedalar. Decidi remove-los e o
carrinho ficou como o dos flintstones. Em seguida coloquei um lastro pra que
ela apoiasse os pés e pudesse ser empurrada no carrinho. Depois&amp;nbsp; resolvi
colocar um motor com todos os acessórios necessários pra transformá-lo num
carro elétrico. Por ultimo adaptei um controle remoto.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O controle remoto &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;o:smarttagtype name=&quot;PersonName&quot; namespaceuri=&quot;urn:schemas-microsoft-com:office:smarttags&quot;&gt;&lt;/o:smarttagtype&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:595.3pt 841.9pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:35.4pt;
 mso-footer-margin:35.4pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;

--&amp;gt;

&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;o:smarttagtype name=&quot;PersonName&quot; namespaceuri=&quot;urn:schemas-microsoft-com:office:smarttags&quot;&gt;&lt;/o:smarttagtype&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:595.3pt 841.9pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:35.4pt;
 mso-footer-margin:35.4pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;div class=&quot;MsoNormal&quot;&gt;
O controle remoto 2,4 Ghz de três canais para carros. Na
verdade eu montei o projeto baseado no controle remoto que eu já tinha &lt;st1:personname productid=&quot;em casa. Nada&quot; w:st=&quot;on&quot;&gt;em casa. Nada&lt;/st1:personname&gt; impede que
seja usado um controle remoto mais simples tipo aqueles de carrinhos baratos
49Khz fazendo-se é claro as devidas alterações.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O ESC&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O sinal de saída do receptor controla diretamente servomotores para controlar o motor da tração precisaria de um ESC (&lt;b&gt;electronic speed control), &lt;/b&gt;controlador eletrônico de velocidade&lt;b&gt;,&lt;/b&gt; tipo os usados em modelismo. O ESC recebe o sinal do receptor e o aplica através de uma etapa de potencia ao motor permitindo assim controlar a velocidade de rotação e, no caso dos carros também o sentido. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ2_9A6GFxavYWB_7sgCbAacwPlxnWPO7igfiOUe6nA7tKXeQ3L0vwxIXFezo00lmAgI09w0l54Iol6M6xakh5w2rw11k10tJJiff5Yx7yXwl2f5YA4CUA1UzUZiTaxR6z8CgEYTmIFUg/s1600/carro+sarah_Esquem%25C3%25A1tico2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ2_9A6GFxavYWB_7sgCbAacwPlxnWPO7igfiOUe6nA7tKXeQ3L0vwxIXFezo00lmAgI09w0l54Iol6M6xakh5w2rw11k10tJJiff5Yx7yXwl2f5YA4CUA1UzUZiTaxR6z8CgEYTmIFUg/s320/carro+sarah_Esquem%25C3%25A1tico2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;br /&gt;
--&amp;gt;

Como não tinha um ESC para motor escovado construí uma espécie de ESC com um
microcontrolador picaxe 08M, dois relés, um mosfet e um punhado de outros
componentes eletrônicos básicos. O diagrama pode ser visto ao lado.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
O funcionamento é simples o picaxe, através da função &lt;i&gt;pulsin&lt;/i&gt; lê o sinal do
receptor como um valor que varia entre aproximadamente 100 e 200. O valor será
zero caso o transmissor esteja desligado ou fora do alcance. Com a alavanca do
controle no meio o valor lido pelo picaxe&amp;nbsp; é de aproximadamente 150
devendo, neste caso, os dois reles serem desativados. Caso o valor seja menor
que 145 o picaxe aciona o rele que faz o motor girar num determinado sentido
que eu vou arbitrar como anti horário, apenas para facilitar o entendimento. Se
o valor for maior que 155 o outro rele é acionado fazendo o motor girar no
sentido horário. O sentido de rotação correto pode ser acertado pela alteração
do programa, inversão dos terminais do motor ou pela inversão da ação no transmissor.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Estrutura e motor&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:595.3pt 841.9pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:35.4pt;
 mso-footer-margin:35.4pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;div class=&quot;MsoNormal&quot;&gt;
O motor usado é de vidro elétrico reaproveitado de um antigo
robô lutador de sumo. Ele foi aberto e teve seu pino removido. Foi feito um
furo na tampa metálica para permitir a passagem do eixo e um corte, com o
auxilio de uma serra copo, no lado onde estava o pino de modo a deixar solto o
guia do pino.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiYVPiWff6QMHDIhTd4gC-ofhJvLsOEb82AJ247G1Pomu5LIzX9FLicTPLwMNaxzqjLK3uyqvbzJ3ma84dHyFP4ZdJ9y3I64JRpg2pIMYSBoQd_ZxATHDI9KGo_O0fKgvxs0ly56NAiY/s1600/DSCF1210.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNiYVPiWff6QMHDIhTd4gC-ofhJvLsOEb82AJ247G1Pomu5LIzX9FLicTPLwMNaxzqjLK3uyqvbzJ3ma84dHyFP4ZdJ9y3I64JRpg2pIMYSBoQd_ZxATHDI9KGo_O0fKgvxs0ly56NAiY/s200/DSCF1210.JPG&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNCGyvYgGfWG-vAnwTPND2IwBQAIGR1RpAgjDdbsb2w6FDBDFp1bTd8woMABDfz8bI4oUnEEoFbBditdPFUIFoaG8XDtTs3EULqhoqnxqCy0dMXWKuOgW0-sSWslvXA0lL-OAg1S3fq5Q/s1600/DSCF1205.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNCGyvYgGfWG-vAnwTPND2IwBQAIGR1RpAgjDdbsb2w6FDBDFp1bTd8woMABDfz8bI4oUnEEoFbBditdPFUIFoaG8XDtTs3EULqhoqnxqCy0dMXWKuOgW0-sSWslvXA0lL-OAg1S3fq5Q/s200/DSCF1205.JPG&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEPKhxGSJ0d_m5-UxW89b44iavMEWy8SdcfolGB7nrT0ZW6sqZSZAUiDyTtnC8FvaEEnCFM0aHBJ8OL-DRlYnonT-GREqIGCy6HyXXpd5uViMHeAFID7OrMt51csF7s8ZyiIR4mU11XFs/s1600/DSCF1206.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEPKhxGSJ0d_m5-UxW89b44iavMEWy8SdcfolGB7nrT0ZW6sqZSZAUiDyTtnC8FvaEEnCFM0aHBJ8OL-DRlYnonT-GREqIGCy6HyXXpd5uViMHeAFID7OrMt51csF7s8ZyiIR4mU11XFs/s200/DSCF1206.JPG&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;
&lt;/div&gt;
--&amp;gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
Uma barra roscada foi adaptada no lugar do eixo
traseiro (foto ao lado). Essa barra é presa ao conjunto engrenagem e antigo
guia do pino por quatro porcas em contra pressão. O motor foi então preso ao
carro com uma abraçadeira em alumínio.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkZahoyqRGHcFoEBYG6b0XNuYvcuMZeV7HylQlUQOpruqsfyZ8kwupJKCTaJHzQWfupDzNqI82ZAI44-gEPExAF-WAnxXzyVTSdnSlEDSSzqhReOchqlIFyeIvPOhMYeBC03_OMF1JIbg/s1600/DSCF1154.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkZahoyqRGHcFoEBYG6b0XNuYvcuMZeV7HylQlUQOpruqsfyZ8kwupJKCTaJHzQWfupDzNqI82ZAI44-gEPExAF-WAnxXzyVTSdnSlEDSSzqhReOchqlIFyeIvPOhMYeBC03_OMF1JIbg/s200/DSCF1154.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzeJT8XeJHuEvitZc3UGFaTDEczFOy6f4i0ggK7iqxD_0j6sZhA1ulr3-nFTPWtTGVBm0Xq-oVoECKa3mRgNqVJnWO6dUsOnBknitdsY3Ev-8dS7nj0l1ToFxQBLAoR3bBqJB945N7zbc/s1600/DSCF1197.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzeJT8XeJHuEvitZc3UGFaTDEczFOy6f4i0ggK7iqxD_0j6sZhA1ulr3-nFTPWtTGVBm0Xq-oVoECKa3mRgNqVJnWO6dUsOnBknitdsY3Ev-8dS7nj0l1ToFxQBLAoR3bBqJB945N7zbc/s200/DSCF1197.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0UkruNrXB0ZK-fcZ6vKzrYYE9PJTkHx90xGEe0A72ZA4ksV6N7aJQikZ4miKZrtjVjhcVhCfnHmcVBntJpy_VlvD4HaskXHaxDbyscPoeaBVRL7jE-NfuZ-TPMl70-vUwD3mKyWzrnUw/s1600/DSCF1207.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0UkruNrXB0ZK-fcZ6vKzrYYE9PJTkHx90xGEe0A72ZA4ksV6N7aJQikZ4miKZrtjVjhcVhCfnHmcVBntJpy_VlvD4HaskXHaxDbyscPoeaBVRL7jE-NfuZ-TPMl70-vUwD3mKyWzrnUw/s200/DSCF1207.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;link href=&quot;file:///D:%5CDOCUME%7E1%5Cfna6%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;/link&gt;&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0cm;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p
 {mso-margin-top-alt:auto;
 margin-right:0cm;
 mso-margin-bottom-alt:auto;
 margin-left:0cm;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
@page Section1
 {size:612.0pt 792.0pt;
 margin:70.85pt 3.0cm 70.85pt 3.0cm;
 mso-header-margin:36.0pt;
 mso-footer-margin:36.0pt;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
&lt;/style&gt;

--&amp;gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
Para controlar a direção do carro foram usados
dois servos ligados em paralelo, por um a extensão em &#39;Y&#39;, diretamente ao
receptor do controle.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglWSTquAkQndyCDPHYvVQZThJrf5YhJSC0xP-PKO58bPKXGThyphenhypheniTeswJi35PST1bYrqNAjJnAvsVllMb_CsGtCEq61HREQ5dQCSDUsObGPJAL93V-lcVPn9cu_smSoi0e_bORSLBaRT3A/s1600/DSCF1208.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglWSTquAkQndyCDPHYvVQZThJrf5YhJSC0xP-PKO58bPKXGThyphenhypheniTeswJi35PST1bYrqNAjJnAvsVllMb_CsGtCEq61HREQ5dQCSDUsObGPJAL93V-lcVPn9cu_smSoi0e_bORSLBaRT3A/s200/DSCF1208.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjASERlJQ1L9UEqQQuBJFYoSHT6GA7mJq5TRj7k8e24MMVlnRv_JIMR9IFj9ra0hEQ3Zh1LvyFXhxK4Kbs3rtivUARj0HjwunRO87LRvSyC6Tj5PiD4ZP2taUPZImsVBXAkY1tC_9mNPiY/s1600/DSCF1158.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjASERlJQ1L9UEqQQuBJFYoSHT6GA7mJq5TRj7k8e24MMVlnRv_JIMR9IFj9ra0hEQ3Zh1LvyFXhxK4Kbs3rtivUARj0HjwunRO87LRvSyC6Tj5PiD4ZP2taUPZImsVBXAkY1tC_9mNPiY/s200/DSCF1158.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFi-n956ZUtR3nARaj7ANpXDc4LKGyYq_4dlSYH_VuwcB3o00wjiLWGqecUlUia-Vg2xoFsaICMItZNpmz7a8nPFs-eX_eBvzdZrAVjVaLytGNvTJguEhHjbYkldEalq4FZeaBGoLQY10/s1600/DSCF1159.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_rAWeOt7xl-vwz_ZQf7lY19_FslPHtXl8EkUQFkEebBHEGDxg1whGQjbbkRS8i9zCLfxB0p_n3PJvclSVtWB5vNardlOIVnlYHqxIWrJKlb4c4uhvc8l-n9CwGxbWkED1ntbuglzJaA/s1600/DSCF1198.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ_rAWeOt7xl-vwz_ZQf7lY19_FslPHtXl8EkUQFkEebBHEGDxg1whGQjbbkRS8i9zCLfxB0p_n3PJvclSVtWB5vNardlOIVnlYHqxIWrJKlb4c4uhvc8l-n9CwGxbWkED1ntbuglzJaA/s200/DSCF1198.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOflsMGbNZxaK9_CRiWs0Pj9rWYY86tm3JwXhmycmILVXBtKWWNh5Xhkf8O3lV15e_JhyphenhyphenHmAVaG98b9p8jrTC2yaYjWd6BLWf01QU4eLgxG2IfOTrsVv4hLvVOXf2dkC1pVch8gk6w-5o/s1600/DSCF1161.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
O pequeno código pode ser visto abaixo:&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol frente_Pin = 1  &#39; pino para o rele frente
symbol re_Pin = 4  &#39; pino para o rele re
symbol pwm_pin = 2

main: &#39;laco principal

 &#39;pwmout pwm_pin,255,555

&#39;le  pulso no piuno 4 e armazena na palavra w0
    pulsin 3,1,w1
     
    
    &#39;debug w1 &#39;usado para testes
 
 &#39; se o controle estiver desligado e valor em w1 ser zero
 &#39; o carro deve ficar parado
if w1 = 0  then  

     low frente_Pin
     low re_Pin
   
 &#39;se o valor lido for menor que 140 vai para frente
 else if w1 &amp;lt; 145 then
 
 &#39;ajusta o valor de w1 para a escala do pwm

    w2 = 145-w1
    w2= w2 * 45/2
    
     pwmout pwm_pin,255,w2 &#39; aplica o pwm ao motor
     high frente_Pin 
     low re_Pin
     
 &#39;se o valor lido for maior que 170 vai para traz      
 else if w1 &amp;gt; 155 then
 
 &#39;ajusta o valor de w1 para a escala do pwm

    w2 = w1-155
    w2= w2 * 45/2
     
     pwmout pwm_pin,255,w2 &#39; aplica o pwm ao motor   
     high re_Pin
     low frente_Pi
     
 &#39;se o valor lido for estiver entre 140 e 170 para o carro 
else

     low re_Pin
     low frente_Pin
 
 endif  

goto main &#39; retorna para main
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8127934330279932703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8127934330279932703'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/12/motor-e-controle-remoto-24-ghz-em-carro.html' title='ESC com relés e controle remoto  2.4 GHz em carro infantil'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ2_9A6GFxavYWB_7sgCbAacwPlxnWPO7igfiOUe6nA7tKXeQ3L0vwxIXFezo00lmAgI09w0l54Iol6M6xakh5w2rw11k10tJJiff5Yx7yXwl2f5YA4CUA1UzUZiTaxR6z8CgEYTmIFUg/s72-c/carro+sarah_Esquem%25C3%25A1tico2.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-7760503023007192151</id><published>2011-06-27T06:08:00.000-07:00</published><updated>2016-12-08T15:17:35.066-08:00</updated><title type='text'>Arduino cubo LED</title><content type='html'>&lt;iframe frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;https://player.vimeo.com/video/25608413?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
Cubo led não é nenhuma novidade, existem muitos tutoriais e vídeos na internet mostrando cubos 3x3x3, 4x4x4, 5x5x5, 8x8x8 e até maiores. Como me interessei pelo assunto há pouco tempo decidi começar com o 3x3x3 que é mais simples e barato apesar de, obviamente, ser mais limitado por ter menor definição.&lt;br /&gt;
&lt;br /&gt;
Dois projetos postados no &lt;a href=&quot;http://www.instructables.com/&quot;&gt;instructables&lt;/a&gt; me deram subsídio para montar meu primeiro cubo led : O &lt;a href=&quot;http://www.instructables.com/id/3x3x3-LED-Cube/&quot;&gt;3x3x3 LED Cube&amp;nbsp;(autor: portreathbeach)&lt;/a&gt; e o&amp;nbsp; &lt;a href=&quot;http://www.instructables.com/id/Led-Cube-8x8x8/&quot;&gt;LED Cube 8x8x8 (autor: chr) &lt;/a&gt;. O primeiro é montado com pic. No post o autor disponibiliza um programa em VB que pode ser usado para gerar os bytes para acionamento do cubo. Para ser usado com o arduino é preciso adaptar o programa ou&amp;nbsp; usar apenas os bytes do código gerado pelo programa. O segundo projeto, um cubo 8x8, é muito interessante e muito trabalhoso também. Nele o autor mostra passo a passo a construção tanto física como eletrônica do cubo de 512 leds, incluindo lista de componentes e a técnica usada para soldar simetricamente os leds.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Funcionameto&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSbaexvyHoMFOJhFJaD8VthjxaeA2JpE1j9O5A6cFx4nndu3pji0YOMDOVEWk0KoQ1emUHV2J4A7vUSW1yPY8DUVujXoHBHAoxBy7qQj-YlNWUhhenmDDgw_AwASrBg2pd3LEwh7TipVM/s1600/teste.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;282px&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSbaexvyHoMFOJhFJaD8VthjxaeA2JpE1j9O5A6cFx4nndu3pji0YOMDOVEWk0KoQ1emUHV2J4A7vUSW1yPY8DUVujXoHBHAoxBy7qQj-YlNWUhhenmDDgw_AwASrBg2pd3LEwh7TipVM/s1600/teste.gif&quot; style=&quot;display: inline;&quot; width=&quot;235px&quot; /&gt;&lt;/a&gt;No cubo os leds são organizados em camadas horizontais, de modo que em uma mesma camada todos os catodos sejam unidos, e em colunas, formados pela união dos anodos três a três pelos anodos. Ligando o catodo comum de uma camada ao negativo e o anodo comum de uma coluna ao positivo o led que estiver simultaneamente na camada e na coluna escolhida acenderá.&lt;br /&gt;
&lt;br /&gt;
Como cada coluna (anodos) de três leds é ligada a um pino do arduino (9 pinos) e cada camada (catodos) ligada, através de um transistor a um pino do arduino (3 pinos). Temos a seguinte dinâmica no cubo:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
1- Coloca em nível alto o pino do arduino que liga ao GND, através do transistor correspondente, os catodos da camada inferior (camada 0);&lt;br /&gt;
2- Colocam-se em nível alto os pinos do arduino ligados aos leds da camada 0 que devem ser acesos; &lt;br /&gt;
3- Aguarda o tempo de exibição da camada;&lt;br /&gt;
4- Apaga todos os leds;&lt;br /&gt;
5- Repetem-se os passos anteriores para as camadas media (camada 1) e superior (camada 2).&lt;br /&gt;
Esse processo acontece em velocidade suficiente para parecer que leds de camadas distintas estão acesos simultaneamente.&lt;br /&gt;
&lt;br /&gt;
Se chamarmos frame uma imagem &quot;estática&quot; exibida no cubo que seguida de outras imagens causa o efeito de movimento. O tempo de exibição desse frame é determinado pelo número de vezes que o ciclo citado acima se repete acendendo os mesmos leds nas mesmas camadas. Analisando o programa fica mais fácil entender.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Montagem&lt;/b&gt;&lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTH5g2UH3eqMbR9FmkCLAEReduRJ9hyj_7mJpHZZGe6Fwa0w1xUaJgrs75THVPkoBodjFWpofKZRGC0PGr_BfcQSd_6U6c-L2ABaLR9HViT1lTKVfT7gTs4UwV9uvVb_CtRw6y9tmB1jk/s1600/Sem+t%C3%83%C2%ADtulo3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; height: 320px; margin-bottom: 1em; margin-left: 1em; width: 253px;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320px&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTH5g2UH3eqMbR9FmkCLAEReduRJ9hyj_7mJpHZZGe6Fwa0w1xUaJgrs75THVPkoBodjFWpofKZRGC0PGr_BfcQSd_6U6c-L2ABaLR9HViT1lTKVfT7gTs4UwV9uvVb_CtRw6y9tmB1jk/s320/Sem+t%C3%ADtulo3.jpg&quot; style=&quot;display: inline;&quot; width=&quot;240px&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Soldar os leds é a&amp;nbsp;parte que requer maior paciência para que fique&amp;nbsp;o mais simétrico possível.&amp;nbsp;Eu&amp;nbsp;usei a técnica mostrada no segundo post mencionado acima. Ele traz&amp;nbsp;muitas fotos que facilitam o entendimento.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
O circuito é simples. Na matriz de contatos foram montados os 12 resistores e os 3 transistores BC548. O projeto usa 12 portas do arduino sendo 3 para polarizar os transistores responsáveis pelo GND de cada camada e 9 para as nove linhas verticais de leds.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
O circuito completo pode ser visto ao lado. Os resistores ligados às bases dos transistores são de 330R e os demais são de 120R.&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;O Programa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
O programa comentado pode ser visto abaixo.&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border-bottom: rgb(153,153,153) 1px dashed; border-left: rgb(153,153,153) 1px dashed; border-right: rgb(153,153,153) 1px dashed; border-top: rgb(153,153,153) 1px dashed; color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;&quot;&gt;&lt;code&gt; int camada[3] ={13,12,11};
int ledPin[9] = {1,2,3,5,6,7,8,9,10};// pinos de dados

byte aux[4] = {B00000000, B00000000, B00000000, B00000000};

                   // camada 0   camada 1  camada 2       
                                                     //012  camada
               //led  01234567   01234567   01234567   888 ultimo led de cada camada
byte efeito1[16] = { B10010010, B01000001, B00100100, B00100000,
                     B00000000, B11110111, B00000000, B01000000,
                     B00100100, B01000001, B10010010, B10000000,
                     B01001001, B01000001, B01001001, B00000000};
                     
byte efeito2[12] = { B11111111, B00000000, B00000000, B10000000,
                     B00000000, B11111111, B00000000, B01000000,
                     B00000000, B00000000, B11111111, B00100000};
                     
byte efeito3[8] = { B01011101, B01011101, B01011101, B00000000,
                    B10101010, B10101010, B10101010, B11100000};
                    
byte efeito4[16] = {B00011011, B00011011, B00011011, B00000000,
                    B11011000, B11011000, B11011000, B00000000,
                    B01101100, B01101100, B01101100, B00000000,
                    B00001101, B00001101, B00001101, B11100000};
                    
byte efeito5[32] = {B11100000, B11100000, B11100000, B00000000,
                    B11100000, B00011100, B00000011, B00100000,
                    B11111111, B00000000, B00000000, B10000000,
                    B00000011, B00011100, B11100000, B10000000,
                    B00000011, B00000011, B00000011, B11100000,
                    B00000011, B00011100, B11100000, B10000000,
                    B11111111, B00000000, B00000000, B10000000,
                    B11100000, B00011100, B00000011, B00100000};
                    
                    
byte efeito6[40] ={B00000011, B00010100, B11100000, B10000000,
                   B10010010, B01000001, B00100100, B00100000,
                   B00000000, B11110111, B00000000, B01000000,
                   B00100100, B01000001, B10010010, B10000000,
                   B01000001, B01000001, B01001001, B00000000,
                   B11100000, B00010100, B00000011, B00100000,
                   B10010010, B01000001, B00100100, B00100000,
                   B00000000, B11110111, B00000000, B01000000,
                   B00100100, B01000001, B10010010, B10000000,
                   B01000001, B01000001, B01001001, B00000000};
                   
byte efeito7[64] ={B10010000,B10010000,B10010000,B00000000,
                   B10001000,B10001000,B10001000,B00000000,
                   B11000000,B11000000,B11000000,B00000000,
                   B01001000,B01001000,B01001000,B00000000,
                   B01100000,B01100000,B01100000,B00000000,
                   B00101000,B00101000,B00101000,B00000000,
                   B00100100,B00100100,B00100100,B00000000,
                   B00001100,B00001100,B00001100,B00000000,
                   B00000100,B00000100,B00000100,B11100000,
                   B00001000,B00001000,B00001000,B11100000,
                   B00000001,B00000001,B00000001,B11100000,
                   B00001001,B00001001,B00001001,B00000000,
                   B00000011,B00000011,B00000011,B00000000,
                   B00001010,B00001010,B00001010,B00000000,
                   B00010010,B00010010,B00010010,B00000000,
                   B00011000,B00011000,B00011000,B00000000};
                    
int i =0;
int j=0;
int a =0;
int frame_time = 10;   // quantidade de iteracoes da cada frame
                                                           
void setup()                   
{
  int i;
  for(i=0;i&amp;lt;3;i++)
  pinMode(camada[i], OUTPUT);  // pinos como saida
  
  for(i=0;i&amp;lt;9;i++)
  pinMode(ledPin[i], OUTPUT);  // pinos como saida

}


void loop() // laço principal
{ 
 cubo(efeito1, 16, 10);  // vetor de efeito, qtd de bytes, numero de repeticoes de exibicao
 cubo(efeito2, 12, 10);
 cubo(efeito3, 8, 10);
 cubo(efeito4, 16, 10); 
 cubo(efeito5, 32, 10);
 cubo(efeito6, 40, 5);
 cubo(efeito7, 64, 10);
 
}  // fim do laço principal

   
 void cubo(byte *efeito, int tamanho, int repet)
 {
    while(repet &amp;gt; 0)
    {
         /* copia os bytes 4 a 4 para o vetor auxilias 
         na primeira iteração copia os 4 primeiros bytes do vetor efeito escolhido
         na segunda os 4 bytes seguintes
         repete até o final do vetor */
         
     for(int cnt1 =0; cnt1 &amp;lt; tamanho;)
      {   
       for(int cnt2 =0; cnt2 &amp;lt; 4; cnt2 ++)  // copia 4 bytes 
        {                                   
         aux[cnt2] = efeito[cnt1];          
         cnt1 ++;                           
        }                           
      mostra_frame();//acende os leds correspondentes aos 4 bytes         
     } 
     repet --;
   }                     
 }
 
                      
  void mostra_frame()
  {
    for(int cnt=0; cnt&amp;lt; frame_time; cnt++)
    {
       for(j=0; j&amp;lt; 3; j++) // seleciona a camada
       {
         digitalWrite(camada[j], HIGH); // polariza o transistor correspondente a camada j 
                                        // o que liga os catodos desta camadaao GND
         for(a=0; a&amp;lt; 8; a++) // verifica bit a bit o byte correspondente a camada ativa 
         {
           if(bitRead(aux[j] , a) == 1)  // se o bit for 1 
             digitalWrite( ledPin[7-a], HIGH); //acende o led correspondente
           else
             digitalWrite( ledPin[7-a], LOW); // se for 0 apaga
    
           if(bitRead(aux[3] , 7-j) == 1)  // verifica o bit do nono led que está no quarto byte
             digitalWrite( ledPin[8], HIGH);
           else
            digitalWrite( ledPin[8], LOW); 
        }
        delay(7);
        digitalWrite(camada[j], LOW);
      }
   }             
 }

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7760503023007192151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7760503023007192151'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/06/arduino-cubo-led.html' title='Arduino cubo LED'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSbaexvyHoMFOJhFJaD8VthjxaeA2JpE1j9O5A6cFx4nndu3pji0YOMDOVEWk0KoQ1emUHV2J4A7vUSW1yPY8DUVujXoHBHAoxBy7qQj-YlNWUhhenmDDgw_AwASrBg2pd3LEwh7TipVM/s72-c/teste.gif" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-8172878110240317972</id><published>2011-04-25T19:29:00.000-07:00</published><updated>2016-12-08T15:17:56.301-08:00</updated><title type='text'>Picaxe Triac</title><content type='html'>&lt;iframe frameborder=&quot;0&quot; height=&quot;340&quot; src=&quot;https://player.vimeo.com/video/22801449?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;470&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href=&quot;http://vimeo.com/22801449&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Seguindo a linha de circuitos básicos. Esta postagem trata do controle de dispositivos alimentados por tensão da rede domestica 110v ou 220v através de&amp;nbsp; um microcontrolador. Neste caso o picaxe 08M. Um triac é o componente principal da etapa de corrente alternada. Uma lâmpada é usada no exemplo mas nada impede o acionamento de outros dipositivos AC, como motores monofásicos, respeitando-se o limite de corrente no triac usado.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O circuito de força utilizado não foi concebido por mim, foi montado a partir &lt;a href=&quot;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1276992650&quot; target=&quot;blank&quot;&gt;destas informações&lt;/a&gt; publicadas no fórum do Arduino, onde é possível ver detalhe inclusive do layout da placa. Este circuito não controla a intensidade luminosa. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3gC82PIi2-68YSFlUtkvyKdK1YkiKd2LvDxTCphuF_N1m6DOrKGnokiJt0AKnhIoJxyOqjU3jh2LDEXkBJdvvm7CLGie4jsPTH45UfmYG2k96td4tV8P6tndH2FCnGXSuEEGupNeuqow/s1600/picaxe+triac.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3gC82PIi2-68YSFlUtkvyKdK1YkiKd2LvDxTCphuF_N1m6DOrKGnokiJt0AKnhIoJxyOqjU3jh2LDEXkBJdvvm7CLGie4jsPTH45UfmYG2k96td4tV8P6tndH2FCnGXSuEEGupNeuqow/s200/picaxe+triac.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;A idéia da montagem é bem simples Um potenciômetro, ligado a uma entrada analógica do picaxe, é usado para determinar o intervalo entre as piscadas de uma lâmpada incandescente comum. O desenho do circuito pode ser visto ao lado. Abaixo é mostrado o código fonte&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol pot_value = w1
symbol lamp_pin =  2


main: &#39;loop principal

READADC10 4, pot_value    &#39; le o valor do potenciometro ligado 
                  &#39; ao pino 2 e armazena em pot_value
    
high lamp_pin    &#39;acende a lampada

pause pot_value  &#39; aguarda o tempo determinado pelo potenciometro

low lamp_pin     &#39;apaga a lampada

pause pot_value  &#39; aguarda o tempo determinado pelo potenciometro

goto main        &#39;fim do loop principal, retorna ao inicio


&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8172878110240317972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8172878110240317972'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/04/picaxe-triac.html' title='Picaxe Triac'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3gC82PIi2-68YSFlUtkvyKdK1YkiKd2LvDxTCphuF_N1m6DOrKGnokiJt0AKnhIoJxyOqjU3jh2LDEXkBJdvvm7CLGie4jsPTH45UfmYG2k96td4tV8P6tndH2FCnGXSuEEGupNeuqow/s72-c/picaxe+triac.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-2213443128582985783</id><published>2011-04-06T16:21:00.000-07:00</published><updated>2016-12-08T15:18:14.471-08:00</updated><title type='text'>Arduino 8x8 leds</title><content type='html'>&lt;iframe frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;https://player.vimeo.com/video/21904429&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href=&quot;http://vimeo.com/21904429&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
Existe muita coisa na internet sobre matriz de leds 8x8. Inclusive com o arduino. Mesmo assim , partindo da idéia de que quanto mais, melhor, decidi criar esta postagem que descreve a ligação de uma destas matrizes ao arduino com o auxilio de um contador&amp;nbsp; 4017.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
Newton C. Braga &amp;nbsp;&lt;a href=&quot;http://www.newtoncbraga.com.br/index.php/como-funciona/645-conheca-o-4017-art062.html&quot;&gt;neste artigo&lt;/a&gt; explica o funcionamento do contador 4017 incluindo exemplos de utilização, vale a pena.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Como o nome diz é uma matriz, naturalmente composta de linhas e colunas, cujos elementos são os leds. Numa matriz unicolor o &quot;endereço&quot; do led é dado por sua linha e coluna na bicolor e&amp;nbsp; na RGB é preciso determinar além da linha e coluna a cor do led. Para acendermos um determinado led(linha, coluna), julgando que o anodo está ligado ao pino linha e o catodo ao coluna, devemos ligar a linha correspondente ao positivo e a coluna ao negativo da fonte.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Nesta montagem foi usada uma matriz bicolor, entretanto o código só usa a cor vermelha. Numa outra oportunidade postarei algo que use duas cores.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Funcionamento&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJso_Q8d7QWvYLe0sX0etSWxh-FCrtGgCvqLZukeIjjYdjd-kXFcgcIR6SfviD9kOdGTch6ENspFDztWuG7JTXBIEWgII-Wk8HyBfflFuLMI7cC-aPrBj6-EXJx8dLZrNU39D7uHIVPwU/s1600/Sem+t%C3%83%C2%ADtulo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJso_Q8d7QWvYLe0sX0etSWxh-FCrtGgCvqLZukeIjjYdjd-kXFcgcIR6SfviD9kOdGTch6ENspFDztWuG7JTXBIEWgII-Wk8HyBfflFuLMI7cC-aPrBj6-EXJx8dLZrNU39D7uHIVPwU/s320/Sem+t%25C3%25ADtulo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoiKXfJcv0cQ09DBtcKS3argnJHwpW58A367ruQCB7qEsRxvVvMeiv4v-DAhuCOOA3A56gJzNtG6NS_O5giIvwaOWsjdmrnmDr3AvRPcBP00lNgpz7piMh_7NPK5CW0405gcbv6aOp4Zk/s1600/matriz+leds.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoiKXfJcv0cQ09DBtcKS3argnJHwpW58A367ruQCB7qEsRxvVvMeiv4v-DAhuCOOA3A56gJzNtG6NS_O5giIvwaOWsjdmrnmDr3AvRPcBP00lNgpz7piMh_7NPK5CW0405gcbv6aOp4Zk/s320/matriz+leds.png&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
O 4017 tem 10 saídas. Assim que ele é ligado b0&amp;nbsp; é colocado em nível alto (+5V) e a cada pulso de clock uma das saídas subsequentes é colocada em nível alto. O ciclo se repete depois que a décima saída é colocada em nível alto, ou que o reset seja acionado, reiniciando a contagem. Aqui o 4017 é responsável pelo +5 de cada linha de led. A cada pulso de clock enviado pelo arduino ele alimenta os anodos dos diodos de uma das linhas da matriz, começando de cima.&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
As colunas são ligadas diretamente ao arduino que deve colocar a saída correspondente em nível baixo (0V) para acender o led cuja linha esteja sendo alimentada, com 5V, pelo 4017, conforme figura acima.&lt;br /&gt;
Cada caractere é armazenado em um vetor de oito bytes onde cada byte corresponde a uma linha da matriz, sempre de cima para baixo. Neste vetor &#39;0&#39; representa led apagado e &#39;1&#39; aceso. &lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Por exemplo, para a letra A: &lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp; B0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;span style=&quot;color: red;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;/span&gt; 1 1 1 1 1 &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;/span&gt; &lt;/span&gt;0 &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B1 &amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;0&lt;span style=&quot;color: red;&quot;&gt; 1 1 1 1 1 1 1 &lt;/span&gt;0&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;0 0 0 0 0 &lt;span style=&quot;color: red;&quot;&gt;1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B3 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;0 0 0 0 0&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt; 1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B4 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;1 1 1 1 1 &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B5 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;0 0 0 0 0&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt; 1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B6 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;0 0 0 0 0 &lt;span style=&quot;color: red;&quot;&gt;1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;B7 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;1 1 &lt;/span&gt;0 0 0 0 0 &lt;span style=&quot;color: red;&quot;&gt;1 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Teremos o vertor: A[8] = &lt;span style=&quot;font-size: x-small;&quot;&gt;{B00111100, B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;01111110,&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt; B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;110000011, &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;110000011,&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt; B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;111111111, &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;110000011, &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;110000011, &lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;B&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;110000011&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O programa&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;A dinâmica do programa é a seguinte:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;1.&amp;nbsp;&lt;/b&gt;&amp;nbsp; &amp;nbsp;O texto é armazenado em um vetor;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;b&gt;2.&lt;/b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;O programa pega caractere por caractere compara com os caracteres disponíveis e&amp;nbsp; armazena o vetor&amp;nbsp;&amp;nbsp; correspondente em uma vetor auxiliar;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;b&gt;3.&amp;nbsp;&amp;nbsp;&lt;/b&gt;&amp;nbsp; Cada byte, bit a bit, é armazenado em uma linha da matriz &quot;aux&quot; ;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;b&gt;4.&lt;/b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;A matriz aux é passada para a função que imprime no display;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;b&gt;5.&amp;nbsp;&lt;/b&gt;&amp;nbsp; &amp;nbsp;Para dar a idéia de deslocamento a primeira coluna da matriz aux copia a segunda, a segunda copia a terceira isso até que oitava coluna seja copiada pela sétima e receba a primeira coluna do próximo caractere ou colunas em branco enviadas pela função &quot;apaga_coluna(n° de colunas)&quot;.&amp;nbsp; Existe, também a possibilidade de mostrar, sem deslocamento, o caractere no display atravéz do parametro modo da função escreve.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
O código fonte pode ser visto abaixo.&lt;/div&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 12px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;#include &amp;lt;string.h&amp;gt;

              //  0 1 2 3 4 5 6 7
 int aux[8][8]= {0,0,0,0,0,0,0,0, //0     //poderia ter usado dois laços um para colunas outro para linhas pra fazer o mesmo
     /*  k  m */ 0,0,0,0,0,0,0,0, //1     //mas assim parece mais didatico
                 0,0,0,0,0,0,0,0,         // k linha    m columa
                 0,0,0,0,0,0,0,0,
                 0,0,0,0,0,0,0,0,
                 0,0,0,0,0,0,0,0,
                 0,0,0,0,0,0,0,0,
                 0,0,0,0,0,0,0,0};

int aux2[8][8];    // cada byte corresponde a uma linha da letra de cima para baixo        
             // linha 1          2          3           4          5          6          7          8
     byte A[8] = {B00111100, B01111110, B11000011, B11000011, B11111111, B11111111, B11000011, B11000011};            
     byte B[8] = {B11111110, B11111111, B11000111, B11111110, B11111110, B11000111, B11111111, B11111110};               
     byte C[8] = {B11111111, B11111111, B11000000, B11000000, B11000000, B11000000, B11111111, B11111111};               
     byte D[8] = {B11111100, B11111110, B11000111, B11000011, B11000011, B11000111, B11111110, B11111100};      
     byte E[8] = {B11111111, B11111111, B11000000, B11111100, B11111100, B11000000, B11111111, B11111111};                
     byte F[8] = {B11111111, B11111111, B11000000, B11111100, B11111100, B11000000, B11000000, B11000000};
     byte G[8] = {B11111111, B11111111, B11000001, B11000000, B11001111, B11000011, B11111111, B11111111};
     byte H[8] = {B11000011, B11000011, B11000011, B11111011, B11111111, B11000011, B11000011, B11000011}; 
     byte I[8] = {B11111111, B11111111, B00011000, B00011000, B00011000, B00011000, B11111111, B11111111};
     byte J[8] = {B01111111, B01111111, B00001100, B00001100, B11001100, B11001100, B11111100, B01111000};                                    
     byte K[8] = {B11000011, B11000111, B11001110, B11111100, B11111100, B11001100, B11000111, B11000011};         
     byte L[8] = {B11000000, B11000000, B11000000, B11000000, B11000000, B11000000, B11111111, B11111111};
     byte M[8] = {B11000011, B11100111, B11111111, B11011011, B11011011, B11000011, B11000011, B11000011};  
     byte N[8] = {B11000011, B11100011, B11110011, B11111011, B11011111, B11001111, B11000111, B11000011};  
     byte O[8] = {B01111110, B11111111, B11000011, B11000011, B11000011, B11000011, B11111111, B01111110};
     byte P[8] = {B11111110, B11111111, B11000011, B11111111, B11111110, B11000000, B11000000, B11000000};           
     byte Q[8] = {B01111110, B11111111, B11000011, B11000011, B11001011, B11000111, B11111110, B01111101};      
     byte R[8] = {B11111110, B11111111, B11000011, B11000010, B11111100, B11111110, B11000111, B11000111};     
     byte S[8] = {B11111111, B11111111, B11000000, B11111111, B11111111, B00000011, B11111111, B11111111};
     byte T[8] = {B11111111, B11111111, B00011000, B00011000, B00011000, B00011000, B00011000, B00011000};
     byte U[8] = {B11000011, B11000011, B11000011, B11000011, B11000011, B11000011, B11111111, B01111110};
     byte V[8] = {B11000011, B11000011, B11000011, B11000011, B11000011, B01100110, B00111100, B00011000};
     byte X[8] = {B11000011, B11100111, B01100110, B00011000, B00011000, B01100110, B11100111, B11000011};
byte ponto[8] =  {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00011000, B00011000};
byte coracao[8]= {B01100110, B11111111, B11111111, B11111111, B11111111, B01111110, B00111100, B00011000}; 
byte espaco[8] = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}; 


int cont = 0;

int ckPin = 13;                // clock para o contador
int displayPin[8] = {12,11,10,9,8,7,6,5};// pinos de dados
int rstPin = 3;    // reset contador

void setup()                   
{
  int i;
  
  pinMode(ckPin, OUTPUT);      
  pinMode(rstPin, OUTPUT);
  
  for(i=0;i&amp;lt;8;i++)
  pinMode(displayPin[i], OUTPUT);  // pinos com saida

}
char *frase ={&quot;TECNOMELQUE.BLOGSPOT.COM  &quot;};  // texto a ser mostrado  {&quot;AABBCC&quot;};
int t =0;
void loop()                     //inicio programa principal     n
{
 t =0;
 while(t &amp;lt; strlen(frase))
  {                            // envia letra por letra da frase para funcao escreve
  escreve(frase[t], 1, 100);  // caracte, modo 0 apenas mostra 1 desloca, tempo 
  
  apaga_coluna(2); // espaco entre letras passa quantidade de colunas
  t++;
  }
  apaga_coluna(8);
  escreve(&#39;~&#39;,0,1000);
  delay(500);
  escreve(&#39;~&#39;,0,1000);
  delay(500);
  escreve(&#39; &#39;,0,100);

  
 
}  //fim da funcao principal

//////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////

  void escreve(char letra, int modo, int tmp){
  int k;
  byte *Lt;
  
  switch(letra)   // compara a letra e armazena o vetor correspondente em Lt 
  {
  case &#39;A&#39;:
  Lt=A;
  break;
  
  case &#39;B&#39;:
  Lt=B;
  break;
  
 case &#39;C&#39;:
 Lt=C;
 break;

  case &#39;D&#39;:
 Lt=D;
  break;
  
  case &#39;E&#39;:
Lt=E;
  break;
  
  case &#39;F&#39;:
Lt=F;
  break;
  
  case &#39;G&#39;:
Lt=G;
  break;
  
  case &#39;H&#39;:
Lt=H;
  break;
  
  case &#39;I&#39;:
 Lt=I;
  break;
  
  case &#39;J&#39;:
Lt=J;
  break;
  
  case &#39;K&#39;:
Lt=K;
  break;

  case &#39;L&#39;:
 Lt=L;
  break;
  
  case &#39;M&#39;:
  Lt=M;
  break;
  
  case &#39;N&#39;:
  Lt=N;
  break;
 
  case &#39;O&#39;:
  Lt=O;
  break;
  
  case &#39;P&#39;:
  Lt=P;
  break;
  
  case &#39;Q&#39;:
Lt=Q;
  break;


  case &#39;R&#39;:
Lt=R;
  break;

  case &#39;S&#39;:
Lt=S;
  break;
  
  case &#39;T&#39;:
Lt=T;
  break;
  
  case &#39;U&#39;:
Lt=U;
  break;
  
  case &#39;V&#39;:
Lt=V;
  break;
  
 case &#39;X&#39;:
Lt=X;
  break;

  case &#39;.&#39;:
  Lt=ponto;
  break;
  
  case &#39;~&#39;:
 Lt=coracao;
  break;
  

 case &#39; &#39;:
 Lt=espaco;
  break;

 }
  

 //copia o caracter para aux
 // bit por bit é armazenado na matriz aux
   for(int i=0; i&amp;lt;8;i++)
   {
     for(int j=0; j&amp;lt;8;j++)
     {
      if(modo == 0)
      aux[i][j] = bitRead(Lt[i], 7-j); 
      else
       aux2[i][j] = bitRead(Lt[i], 7-j); 
     }
   }

  if ( modo == 0)  // mostra ccaracter
 {
    imprime(tmp);
  }
  else if( modo == 1)  // modo 1 desloca caracter anterior
  {
    
  cont = 0;
   
  for (int passo =0; passo &amp;lt;8; passo++)
  {
    
  for(k=0; k&amp;lt;8; k++)  // linhas
  {
    
  for(int m=0; m &amp;lt; 7;  m++)   
  {
    
   aux[k][m] = aux[k][m+1];

  }
   aux[k][7] = aux2[k][cont];   // ultima coluna de aux recebe a primeira coluna de  E
  }
  
  cont ++; 

  imprime(tmp);  // mostra no display

  } //fim da contagem de passos
} // fim de escreve letra

  }
  
 
   

//////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////

void apaga_coluna(int qtd)
{
 int k;
  
for (int passo =0; passo &amp;lt;qtd; passo++)
  {
    
  for(k=0; k&amp;lt;8; k++)  // linhas
  {
    
  for(int m=0; m &amp;lt; 7;  m++)   
  {
    
   aux[k][m] = aux[k][m+1];

  }
   aux[k][7] = 0;   // ultima coluna de aux recebe a primeira coluna de  E
  }
  
  cont ++;
 
  imprime(100);  // mostra no display

 } //fim da contagem de passos

} //fim apaga coluna

//////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////

 void imprime(int tmp)
 {
 // int tmp = 100;

  for(int a=0; a &amp;lt; tmp; a++)   // tmp representa a quantidades de vezes que cada caracter é exibido
  {     
  digitalWrite(rstPin, LOW); // prepara para reset do contador
  
    for(int i =0; i&amp;lt;8; i++) // linhas
    {
     digitalWrite(ckPin, LOW); // como a mudança ocorre na descida do clock esta linha so faz sentido no segund ciclo
  
   for(int j=0;j&amp;lt;8;j++)   // colunas
  {
      if(aux[i][j] == 1) 
      {
       digitalWrite(displayPin[j], LOW);
      }
     else
     {
     digitalWrite(displayPin[j], HIGH);
     }
  }
    
  delay (0.5); // entre linhas
  
   for(int i=0;i&amp;lt;8;i++)                    // apaga a linha
   digitalWrite(displayPin[i], HIGH);
 
  digitalWrite(ckPin, HIGH); 
   
 }
 
  digitalWrite(rstPin, HIGH);  // reset do contador
 
 }  
 }
 
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2213443128582985783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2213443128582985783'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/04/arduino-8x8-leds.html' title='Arduino 8x8 leds'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJso_Q8d7QWvYLe0sX0etSWxh-FCrtGgCvqLZukeIjjYdjd-kXFcgcIR6SfviD9kOdGTch6ENspFDztWuG7JTXBIEWgII-Wk8HyBfflFuLMI7cC-aPrBj6-EXJx8dLZrNU39D7uHIVPwU/s72-c/Sem+t%25C3%25ADtulo.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-1839216186425568569</id><published>2011-03-10T20:51:00.000-08:00</published><updated>2016-12-08T15:18:44.554-08:00</updated><title type='text'>Picaxe 08M - Display de sete segmentos</title><content type='html'>&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;https://player.vimeo.com/video/20859719&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
Se preferir assista no &lt;a href=&quot;http://www.youtube.com/watch?v=S0Op9X6ZnKI&quot; target=&quot;_blank&quot;&gt;youtube.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;O display de sete segmentos é muito usado em circuito com microcntroladores. Esta postagem mostra como ligá-lo ao picaxe 08M com o auxilio do shift register 74hc595, já que este picaxe possui apenas quatro pinos que podem ser usados como saída.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDL9Ffj42TcKzrU_9qSE69Tl3HdSh69JE8roHFJref5JUvG_DDNG9dQm5b8FHlJeo3NMLY5E_mYVeook4IhiWBFFj_4JUznfkH3j1EWbPw01jiBCGahqTOzjWfWBD4c9nQ6maQ0GgIoU/s1600/display+7+seg_bb+esquematico.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDL9Ffj42TcKzrU_9qSE69Tl3HdSh69JE8roHFJref5JUvG_DDNG9dQm5b8FHlJeo3NMLY5E_mYVeook4IhiWBFFj_4JUznfkH3j1EWbPw01jiBCGahqTOzjWfWBD4c9nQ6maQ0GgIoU/s200/display+7+seg_bb+esquematico.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibob9sPW9_0t8UreZqWEB_I9hp-DgLeMZYgbLBfCI1IY-xDxgckP3wJavHjhpF8D4Z2oKmJk7UNnCAk01rjQaeNyWo0J8znU0wH5apMFx8GOukhvBFVrGv3MqsrnQtw1HDbDUUqO4kmGU/s1600/display+7+seg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibob9sPW9_0t8UreZqWEB_I9hp-DgLeMZYgbLBfCI1IY-xDxgckP3wJavHjhpF8D4Z2oKmJk7UNnCAk01rjQaeNyWo0J8znU0wH5apMFx8GOukhvBFVrGv3MqsrnQtw1HDbDUUqO4kmGU/s200/display+7+seg.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;A postagem &quot;&lt;a href=&quot;http://tecnomelque.blogspot.com/2011/01/arduino-dimmer-com-display-de-sete.html&quot; target=&quot;blank&quot;&gt;Arduino dimmer com display de sete segmentos&lt;/a&gt;&quot; traz alguns detalhes sobre o display de sete segmentos que serão úteis nesta montagem. Os dígitos serão formados a partir da mesma tabela, &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;acrescentando-se um zero à direita do bit menos significativo de cada número da tabela para completar o byte.&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;O 08M envia cada byte, bit a bit, para o 7495 que tem suas oito saídas ligadas ao display. A saída Q7 foi ligada ao pino correspondente ao ponto. Um bom tutorial sobre o shift register pode ser encontrado no &lt;a href=&quot;http://www.arduino.cc/en/Tutorial/ShiftOut&quot; target=&quot;blank&quot;&gt;site do arduino&lt;/a&gt;. Basicamente para usá-lo é preciso três sinais: um clock para o shift, um clock para o latch e o terceiro deve conter o bit de dado.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O Programa&lt;/span&gt;&lt;/b&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Para formar um número no display são enviados oito bits através do pino &quot;out0&quot; do picaxe, denominado aqui como dataPin. &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Por exemplo, para formar o número zero, considerando 1 para segmento aceso e 0 para apagado, &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;temos que enviar o byte &quot;11111100&quot; que corresponde, em decimal, a 252. O programa&amp;nbsp; segue a sequência abaixo:&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;1 - Armazena o byte em &quot;b0&quot; que começa no bit 0 e termina no bit 7;&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;2 - Coloca o clock do latch em nível baixo; &lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;3 - Coloca o clock do shift em nível baixo. Preparando-o para a passagem do bit que acontece na mudança&amp;nbsp;&amp;nbsp; do clock do nível baixo para o alto (0 para 1);&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;4 - Verifica o estado do bit0, que neste caso é 0 colocando o dataPin em nível baixo;&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;5 - Coloca o clock do shift em nível alto. O bit0 vai para a saída do primeiro registrador do shift que também é a entrada do segundo;&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;6 - Os paços 3 , 4 e 5 se repetem para os outros sete bits. Cada vez que um bit é adicionado os outros são &quot;empurrados&quot; para o registrador seguinte;&lt;/span&gt;&lt;br style=&quot;font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;7 - Após completar o envio dos oito bits coloca o clock do latch em nível alto fazendo com que todos os bits apareçam na saída do CI, mostrando assim o dígito no display.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol dataPin = 0  &#39; pino do dados seriais

symbol latchPin = 2  &#39; clock do latch apos ter todos os dado vai a nivel alto para mostrar na saida

symbol shiftPin = 1  &#39; clock do registrador de deslocamento

symbol cnt1 = b1

symbol dados = b0


main: &#39;laco principal


   for b4=0 to 9
   
&#39;lookup armazena o numero que esta na posicao b4 na variavel &quot;dados&quot;

             &#39;0   1  2   3   4   5   6   7   8   9
   lookup b4,(252,96,218,242,102,182,190,224,254,246),dados
   
   low latchPin &#39;clock do latch em nivel baixo

      for cnt1 =0 to 7 
    
        low shiftPin   &#39;clk do shift em nivel baixo 
        
    
  &#39; a cada passagem verifica se o bit correspondente
  &#39; é zero ou um e coloca a saida em nivel alto ou baixo respectivamente  
  
      select cnt1
    
    case 0
    {
     if bit0 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    case 1
    {
     if bit1 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    
    case 2
    {
     if bit2 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    
    case 3
    {
     if bit3 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
   
    case 4
    {
     if bit4 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    case 5
    {
     if bit5 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    case 6
    {
     if bit6 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    case 7
    {
     if bit7 = 1 then
         
        high dataPin
     else
       low dataPin
     endif 
    }
    
    endselect
        
      
       high shiftPin &#39;clk shift pin em nivel alto envia o bit para o proximo registrador
    
      next cnt1

   high latchPin &#39;clock do latch apos ter todos os dado (8 bits)
                &#39;vai a nivel alto para mostrar na saida do 7495
                
    pause 945   &#39;entre numeros
    
    next b4     &#39; fim do laco for

    
goto main &#39; fim do laco pricipal
&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1839216186425568569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/1839216186425568569'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/03/picaxe-08m-display-de-sete-segmentos.html' title='Picaxe 08M - Display de sete segmentos'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDL9Ffj42TcKzrU_9qSE69Tl3HdSh69JE8roHFJref5JUvG_DDNG9dQm5b8FHlJeo3NMLY5E_mYVeook4IhiWBFFj_4JUznfkH3j1EWbPw01jiBCGahqTOzjWfWBD4c9nQ6maQ0GgIoU/s72-c/display+7+seg_bb+esquematico.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-8674503998119177216</id><published>2011-03-08T20:10:00.000-08:00</published><updated>2016-12-08T15:19:10.485-08:00</updated><title type='text'>Picaxe PWM</title><content type='html'>&lt;iframe frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;https://player.vimeo.com/video/20564462&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href=&quot;http://vimeo.com/20564462&quot;&gt;&lt;/a&gt; &lt;br /&gt;
Se preferir assista no &lt;a href=&quot;http://www.youtube.com/watch?v=7bSz2om80bw&quot; target=&quot;blank&quot;&gt;youtube.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Alguns circuitos são básicos para muitas montagens mecatrônicas, controlar a velocidade de rotação de um motor de corrente continua por PWM é um deles. O circuito mostrado aqui usa um potenciômetro ligado a uma entrada analógica de um Picaxe 08M (conversor AD de 10 bits), como usado na &lt;a href=&quot;http://tecnomelque.blogspot.com/2011/02/picaxe-servomotor-e-potenciometro.html&quot; target=&quot;_blank&quot;&gt;montagem com servomotor&lt;/a&gt;, para controlar a rotação de um motor DC. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ8Q48bkQIUJqIJsHC-m_waNzz5hyoZQqHuEX50iog8bW0I4PDH57j02KhYviuLVHVXfjDcr6qxlisC3ivtCmnBKz0waaEeL5PY7Kyv0WW8YNPMaTeZclRmDTIvYG8X-k9hh5DjCmextk/s1600/picaxe+pot+pwm+esquematico.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ8Q48bkQIUJqIJsHC-m_waNzz5hyoZQqHuEX50iog8bW0I4PDH57j02KhYviuLVHVXfjDcr6qxlisC3ivtCmnBKz0waaEeL5PY7Kyv0WW8YNPMaTeZclRmDTIvYG8X-k9hh5DjCmextk/s200/picaxe+pot+pwm+esquematico.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;O sinal PWM gerado no picaxe é aplicado ao gate do MOSFET IRF540, através do acoplador óptico 4n25. O diagrama completo do circuito é mostrado ao lado. Um resistor de 330R é usado para limitar a corrente no led do 4n25. O resistor ligado entre&amp;nbsp; o gate do mosfet e o GND é de 10k. O potenciômetro pode ser de qualquer valor.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQPTcrY7k5J80CmrRzSlo5IJkO7i-CwayI86KS2id1CgtZIHcNPKwEFlgmhu5ZQdLHlGkJrLDk-ZsNRr5a8dfwD3HGHh1IgDBo-41zi6SVJnH4DkBx_rxhxGlAcNxT6KFpGPBtc_rnMwQ/s1600/picaxe+PWM_bb.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQPTcrY7k5J80CmrRzSlo5IJkO7i-CwayI86KS2id1CgtZIHcNPKwEFlgmhu5ZQdLHlGkJrLDk-ZsNRr5a8dfwD3HGHh1IgDBo-41zi6SVJnH4DkBx_rxhxGlAcNxT6KFpGPBtc_rnMwQ/s200/picaxe+PWM_bb.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Para testar o circuito foi usada uma pequena furadeira que em 12V tem corrente,&amp;nbsp; à vazio,&amp;nbsp; menor&amp;nbsp; que&amp;nbsp; 1A, mas o mosfet usado pode suportar correntes superiores a 10A respeitando-se, é claro, as recomendações do &lt;a href=&quot;http://www.datasheetcatalog.org/datasheet/stmicroelectronics/9387.pdf&quot; target=&quot;_blank&quot;&gt;datashet&lt;/a&gt; para limite de corrente que além das características eletrônicas do componente é influenciado pelo tipo de dissipador adotado.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;O programa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No código, mostrado abaixo, o valor do potenciômetro é lido&amp;nbsp; 0 - 1023 e aplicado ao pino 4 através da função &quot;pwmout&quot; que precisa de três parâmetros: pino (pino de saída do sinal), período (período do sinal, 0 a 255) e ciclo de trabalho&amp;nbsp; (grosseiramente falando é o valor do PWM, 0 a 1023).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol pot_value = w1

symbol motor_pin =  2

main: &lt;span style=&quot;color: lime;&quot;&gt;&#39;loop principal&lt;/span&gt;

READADC10 4, pot_value &lt;span style=&quot;color: lime;&quot;&gt;&#39; le o valor do potenciometro &lt;/span&gt;

pwmout motor_pin,255,pot_value &lt;span style=&quot;color: lime;&quot;&gt;&#39; envia o valor para o pino 2&lt;/span&gt;

goto main &lt;span style=&quot;color: lime;&quot;&gt;&#39;fim do loop principal&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8674503998119177216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/8674503998119177216'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/03/picaxe-pwm.html' title='Picaxe PWM'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ8Q48bkQIUJqIJsHC-m_waNzz5hyoZQqHuEX50iog8bW0I4PDH57j02KhYviuLVHVXfjDcr6qxlisC3ivtCmnBKz0waaEeL5PY7Kyv0WW8YNPMaTeZclRmDTIvYG8X-k9hh5DjCmextk/s72-c/picaxe+pot+pwm+esquematico.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-2757046813645381054</id><published>2011-02-26T15:12:00.000-08:00</published><updated>2016-12-08T15:19:43.004-08:00</updated><title type='text'>Wii Nunchuk, arduino e labirinto de madeira</title><content type='html'>&lt;iframe frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;https://player.vimeo.com/video/20416070&quot; width=&quot;400&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href=&quot;http://vimeo.com/20416070&quot;&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Visitando o site &lt;a href=&quot;http://www.instructables.com/&quot; target=&quot;_blank&quot;&gt;instructables&lt;/a&gt;&amp;nbsp; que, diga-se de passagem, é um site muito bom, encontrei o projeto &lt;a href=&quot;http://www.instructables.com/id/Servo-Controlled-Labyrinth/&quot; target=&quot;_blank&quot;&gt;Servo Controlled Labyrinth by nivini &lt;/a&gt;. Decidi então, tendo como referência a ideia do autor, montar o jogo usando o arduino e o nunchunk para controlar o tabuleiro. Como não tinha&amp;nbsp; o jogo tradicional montei meu próprio tabuleiro usando duas caixas em mdf e quatro pedaços de compensado 4mm além de outras pequenas peças adaptadas de matérias disponíveis em casa, o que rendeu um pouco mais de trabalho, mas nada exagerado.&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt; Se você já tiver o labirinto pode montar toda a parte física como no projeto original, o que torna as coisas mais fáceis.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O labirinto&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: large;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNh1bC0hxZXjjc6Fu-HGRWa0RfHv_2kpdmiTeqdiKEF4ASf_eScuEioIJVjzdRupwSJ83dtIBG3WFOJi1id8-eNchw0GheNl5sdb15wUnSimVySLLY360thBed9_dOgCnHrmB_S1HOmbo/s1600/IMAG0476.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNh1bC0hxZXjjc6Fu-HGRWa0RfHv_2kpdmiTeqdiKEF4ASf_eScuEioIJVjzdRupwSJ83dtIBG3WFOJi1id8-eNchw0GheNl5sdb15wUnSimVySLLY360thBed9_dOgCnHrmB_S1HOmbo/s200/IMAG0476.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9EcE-8Ccm8trx8suSTZPB6MfIKlATLpvRe3oi_tqHHE4Cug3tHXk7g6Zmul-RkNlj8W6tVWghIXtf_ZrNjsbV1kI5qT6uF3PyOaXlEZ2VI3qaTBN_vdhnRMKCUBdMuwTb_MWjmrOb3o/s1600/IMAG0475.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9EcE-8Ccm8trx8suSTZPB6MfIKlATLpvRe3oi_tqHHE4Cug3tHXk7g6Zmul-RkNlj8W6tVWghIXtf_ZrNjsbV1kI5qT6uF3PyOaXlEZ2VI3qaTBN_vdhnRMKCUBdMuwTb_MWjmrOb3o/s200/IMAG0475.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;Para a confecção do labirinto usei uma caixa em MDF de 25cm x 25cm e a&amp;nbsp; tampa de outra caixa em MDF&amp;nbsp; 20cm x 20cm, onde foi montado o labirinto propriamente dito com&amp;nbsp; pedaços das peças de um pega varetas &quot;gigante&quot; (5mm de diâmetro), um brinquedo abandonado por minha filha de três anos. Quatro pedaços de compensado serviram para fazer o quadro intermediário. Neste quadro foi fixado o primeiro servo que tem seu eixo preso no centro de uma das laterais da tampa 20x20 e é responsável pelo movimento no eixo Y. O segundo servo, que é&amp;nbsp; responsável pelo movimento no eixo X, é fixado à caixa maior e tem seu eixo preso em uma das laterais do quadro intermediário de modo a ficar perpendicular ao primeiro servo.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxq0UPBA96iQ3XP00Kl3vVXGQODYOsj_rcJSJx-ySvhyphenhyphenFLnGZGUsVJwKxoJp1rltH3HQJbgA9E4FP9Kxyw_kT1JyvwfSBdCVy_Ezc1YoglLtbtiFpQgsDNdnBOD7t52lk1TRD9auQqF0/s1600/IMAG0478.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxq0UPBA96iQ3XP00Kl3vVXGQODYOsj_rcJSJx-ySvhyphenhyphenFLnGZGUsVJwKxoJp1rltH3HQJbgA9E4FP9Kxyw_kT1JyvwfSBdCVy_Ezc1YoglLtbtiFpQgsDNdnBOD7t52lk1TRD9auQqF0/s200/IMAG0478.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O código&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;O código, que pode ser visto abaixo, foi adaptado do código encontrado neste site: &lt;a href=&quot;http://www.windmeadow.com/node/42&quot; target=&quot;_blank&quot;&gt;http://www.windmeadow.com/node/42 &lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: small;&quot;&gt;Eu substitui a parte do código que imprime os valores na tela pelo controle dos servos. Pra melhora a estabilidade o código faz uma media dos últimos 20 valores lidos, ajusta a escala e aplica os resultados aos servos.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(240, 240, 240) url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUb5HDCc-v0EUeQPRsGQVWrqPKePNHt1kxTH1nQybIVa0APaAsFID548RKmvkUkoJbfa9Fy_HeuzikvtQPQ9oRmDhURJDbZye1WpnWUfeuwTHcc2LwjNb9WdamKn2zlqZ5vGgHQWnUA9ql/s320/codebg.gif) repeat scroll 0% 0%; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black;&quot;&gt; /*  
  * NunchuckPrint  
  *  
  * 2007 Tod E. Kurt, http://todbot.com/blog/  
 BRANCO------ GND  
 AZUL-------- SCL pino analogico 5  
 VERMELHO---- +3.3V  
 VERDE------- SDA pino analogico 4  
  */  
 #include &amp;lt;Wire.h&amp;gt;  
 #include &amp;lt;Servo.h&amp;gt;   
 Servo servo_y; // create servo object to control a servo   
 Servo servo_x; // create servo object to control a servo   
 #define m_movel 20 // quantidade de leituras para media  
 int media_leit_y =0;   
 int media_y_aux =0;  
 int aux_soma_y = 0;  
 int aux_m_y[m_movel];  
 int media_leit_x =0;   
 int media_x_aux =0;  
 int aux_soma_x = 0;  
 int aux_m_x[m_movel];  
 void setup()  
 {  
  servo_x.attach(9); // attaches the servo on pin 9 to the servo object   
  servo_y.attach(10);  
  Serial.begin(19200);  
  nunchuck_setpowerpins(); // use analog pins 2&amp;amp;3 as fake gnd &amp;amp; pwr  
  nunchuck_init(); // send the initilization handshake  
  Serial.print (&quot;Finished setup\n&quot;);  
  for(int i=0; i &amp;lt; m_movel; i++)  
  {  
  aux_m_y[i] =0;  
  aux_m_x[i] =0;  
  }  
 }  
 void loop()  
 {  
  nunchuck_get_data(); // lê dados   
  aciona_servos();   // envia-os para os servos  
  delay(5);  
 }  
 //  
 // Nunchuck functions  
 //  
 static uint8_t nunchuck_buf[6];  // array to store nunchuck data,  
 // Uses port C (analog in) pins as power &amp;amp; ground for Nunchuck  
 static void nunchuck_setpowerpins()  
 {  
 #define pwrpin PORTC3  
 #define gndpin PORTC2  
   DDRC |= _BV(pwrpin) | _BV(gndpin);  
   PORTC &amp;amp;=~ _BV(gndpin);  
   PORTC |= _BV(pwrpin);  
   delay(100); // wait for things to stabilize      
 }  
 // initialize the I2C system, join the I2C bus,  
 // and tell the nunchuck we&#39;re talking to it  
 void nunchuck_init()  
 {   
  Wire.begin();             // join i2c bus as master  
  Wire.beginTransmission(0x52);     // transmit to device 0x52  
  Wire.send(0x40);          // sends memory address  
  Wire.send(0x00);          // sends sent a zero.   
  Wire.endTransmission();     // stop transmitting  
 }  
 // Send a request for data to the nunchuck  
 // was &quot;send_zero()&quot;  
 void nunchuck_send_request()  
 {  
  Wire.beginTransmission(0x52);     // transmit to device 0x52  
  Wire.send(0x00);          // sends one byte  
  Wire.endTransmission();     // stop transmitting  
 }  
 // Receive data back from the nunchuck,   
 int nunchuck_get_data()  
 {  
   int cnt=0;  
   Wire.requestFrom (0x52, 6);     // request data from nunchuck  
   while (Wire.available ()) {  
    // receive byte as an integer  
    nunchuck_buf[cnt] = nunchuk_decode_byte(Wire.receive());  
    cnt++;  
   }  
   nunchuck_send_request(); // send request for next data payload  
   // If we recieved the 6 bytes, then go print them  
   if (cnt &amp;gt;= 5) {  
    return 1;  // success  
   }  
   return 0; //failure  
 }  
 void aciona_servos()  
 {   
  for(int cnt = m_movel-1; cnt &amp;gt; 0; cnt --)  
  {  
  aux_m_y[cnt] = aux_m_y[cnt-1];  
  aux_soma_y = aux_soma_y + aux_m_y[cnt];  
  aux_m_x[cnt] = aux_m_x[cnt-1];  
  aux_soma_x = aux_soma_x + aux_m_x[cnt];  
  }  
  int joy_x_axis = nunchuck_buf[0];  
  int joy_y_axis = nunchuck_buf[1];  
  int z_button = nunchuck_buf[5] &amp;amp; 1;  
  int c_button = nunchuck_buf[5] &amp;gt;&amp;gt; 1 &amp;amp; 1;  
  int accel_x_axis = (nunchuck_buf[2] &amp;lt;&amp;lt; 2) + ((nunchuck_buf[5] &amp;gt;&amp;gt; 2) &amp;amp; 0x03);  
  int accel_y_axis = (nunchuck_buf[3] &amp;lt;&amp;lt; 2) + ((nunchuck_buf[5] &amp;gt;&amp;gt; 4) &amp;amp; 0x03);  
  int accel_z_axis = (nunchuck_buf[4] &amp;lt;&amp;lt; 2) + ((nunchuck_buf[5] &amp;gt;&amp;gt; 6) &amp;amp; 0x03);  
  // media eixo Y ////  
  aux_m_y[0] = accel_y_axis;  
  aux_soma_y = aux_soma_y + aux_m_y[0];   
  media_y_aux = aux_soma_y /m_movel;  
  aux_soma_y = 0;  
  media_leit_y = constrain(media_y_aux, 375, 595);  
  media_leit_y = map(media_leit_y, 375, 595, 110, 70);  
  // media eixo X ////  
  aux_m_x[0] = accel_x_axis;  
  aux_soma_x = aux_soma_x + aux_m_x[0];   
  media_x_aux = aux_soma_x /m_movel;  
  aux_soma_x = 0;  
  media_leit_x = constrain(media_x_aux, 375, 595);  
  media_leit_x = map(media_leit_x, 375, 595, 70, 110);  
  servo_y.write(media_leit_y);       // tell servo to go to position in variable &#39;pos&#39;   
  servo_x.write(media_leit_x);   
   }  
 char nunchuk_decode_byte (char x)  
 {  
  x = (x ^ 0x17) + 0x17;  
  return x;  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2757046813645381054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/2757046813645381054'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/02/wii-nunchuk-arduino-e-labirinto-de.html' title='Wii Nunchuk, arduino e labirinto de madeira'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNh1bC0hxZXjjc6Fu-HGRWa0RfHv_2kpdmiTeqdiKEF4ASf_eScuEioIJVjzdRupwSJ83dtIBG3WFOJi1id8-eNchw0GheNl5sdb15wUnSimVySLLY360thBed9_dOgCnHrmB_S1HOmbo/s72-c/IMAG0476.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8557153329162421800.post-7912425891871540138</id><published>2011-02-14T15:06:00.000-08:00</published><updated>2016-12-08T15:20:08.426-08:00</updated><title type='text'>Picaxe, Servo e potenciômetro</title><content type='html'>&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;https://www.youtube.com/v/bCH_amAkJx0?hl=pt&amp;amp;fs=1&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;embed src=&quot;https://www.youtube.com/v/bCH_amAkJx0?hl=pt&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Na ultima postagem sobre o Picaxe comentei que pretendia compra um para testá-lo e aprender sobre ele. Pois bem, comprei um 08M, o mais simples de todos com exceção do picaxe 08.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;A montagem que descrevo aqui é bastante simples, mas não deixa de ser útil para aqueles, que como eu, estão começando a programar o picaxe. A idéia é receber o sinal 0 a 5v de um potenciômetro através de uma entrada analógica que em 10 bits&amp;nbsp; retorna um valor de 0 a 1023&amp;nbsp; (2^10 = 1024 valores possíveis), mudar esse valor para uma escala de 75 a 225 e&amp;nbsp; usando a função&amp;nbsp; &lt;b&gt;&lt;i&gt;&quot;servopos&amp;nbsp; pino, valor”&lt;/i&gt;&lt;/b&gt;,&amp;nbsp; aplicá-lo ao servo&amp;nbsp; ligado ao pino 4 do picaxe através de um resistor de 330R, recomendado pelo manual. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O diagrama é mostrado no vídeo. Dependendo da marca do servo utilizado existe uma variação das cores dos fios de conexão. O positivo normalmente é vermelho o negativo preto ou marrom e o fio de sinal amarelo ou branco. Pra garantir é melhor pesquisar pelo modelo do servo. O potenciômetro pode ser de qualquer valor. &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;Um cuidado especial deve ser tomado com a alimentação do picaxe. Inverter positivo e negativo significa queimá-lo. Não é aconselhável, também, usar tensões acima de 5v.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;O código:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;symbol pot_value = w1
symbol servo_value = w2

init: servo 4,75 ; inicializa o servo

main: &#39;loop principal

READADC10 2, pot_value    &#39; le o valor do potenciometro ligado ao pino 2 e armazena em pot_value

pot_value = pot_value * 5 / 34  &#39; mudando da escala lida no pot 0 - 1023 para 75 a 225 aprox

servo_value = pot_value + 75 
   
servopos 4,servo_value &#39;manda o valor para o servo no saida 4 do picaxe (pino 3 do CI)

goto main &#39;fim do loop principal
&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;color: lime;&quot;&gt;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7912425891871540138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8557153329162421800/posts/default/7912425891871540138'/><link rel='alternate' type='text/html' href='http://tecnomelque.blogspot.com/2011/02/picaxe-servo-e-potenciometro.html' title='Picaxe, Servo e potenciômetro'/><author><name>Melquíades Jr.</name><uri>http://www.blogger.com/profile/06857580931144863342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>