O Evento em 29/03/2014, contou com exposição de projetos, palestras e Workshop para os amantes do Arduino.
Fotos do evento:
Tecla do telefone
|
Saída
digital do Decodificador DTMF |
Valor equivalente
Decimal | |||
Q3
|
Q2
|
Q1
|
Q0
| ||
1
|
0
|
0
|
0
|
1
|
1
|
2
|
0
|
0
|
1
|
0
|
2
|
3
|
0
|
0
|
1
|
1
|
3
|
4
|
0
|
1
|
0
|
0
|
4
|
5
|
0
|
1
|
0
|
1
|
5
|
6
|
0
|
1
|
1
|
0
|
6
|
7
|
0
|
1
|
1
|
1
|
7
|
8
|
1
|
0
|
0
|
0
|
8
|
9
|
1
|
0
|
0
|
1
|
9
|
0
|
1
|
0
|
1
|
0
|
10
|
*
|
1
|
0
|
1
|
1
|
11
|
#
|
1
|
1
|
0
|
0
|
12
|
/* ---------------------------------------------
* DTMF HOME CONTROL V1.0 Rev0.0
* Controle de dispositivos através de telefone
* Arduino-ce
* Comunidade Cearense de Hardware Livre
* http://groups.google.com/group/arduino-ce?hl=pt-br
* http://arduino-ce.blogspot.com
* março de 2011
---------------------------------------------*/
#define RELE1 2 // Conectado ao fio branco do módulo Relé(Figura4)
#define pinBit01 7 // Q0
#define pinBit02 6 // Q1
#define pinBit03 5 // Q2
#define pinBit04 4 // Q3
#define pinBitStd 3 // STD
int tecla = 0;
int bit01 = 0;
int bit02 = 0;
int bit03 = 0;
int bit04 = 0;
int bitStd= 0;
int RELE1_STATE = LOW; // Estado do Relé LOW (Desligado)
void setup() {
Serial.begin(9600); // Iniciamos a Serial com Baudrate 9600
pinMode(RELE1, OUTPUT); // Definimos o pino do Relé como Saída
Serial.println("Aguardando tecla de comando..."); // Exibimos a mensagem no terminal...
}
void loop(){
bitStd = digitalRead(pinBitStd); //Lê o estado do pino STD e armazena em 'bitStd'
if (bitStd == HIGH) {//Se estiver em nível alto fará as leituras
//dos bits dos pinos Q3, Q2, Q1 e Q0
bit01 = digitalRead(pinBit01);
bit02 = digitalRead(pinBit02);
bit03 = digitalRead(pinBit03);
bit04 = digitalRead(pinBit04);
tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para
//decimal (ver Vídeo1)
Serial.print("Recebido: "); // Exibe a mensagem
switch (tecla){ // Seleciona a tecla pressionada
case 1: // Tecla 1
Serial.println("1");
/* COMANDO PARA RELE1 */
RELE1_STATE = !RELE1_STATE; // Guarda o estado INVERTIDO do Relé.
break;
case 2: // Tecla 2
Serial.println("2");
break;
case 3: // Tecla 3
Serial.println("3");
break;
case 4: // Tecla 4
Serial.println("4");
break;
case 5: // Tecla 5
Serial.println("5");
break;
case 6: // Tecla 6
Serial.println("6");
break;
case 7: // Tecla 7
Serial.println("7");
break;
case 8: // Tecla 8
Serial.println("8");
break;
case 9: // Tecla 9
Serial.println("9");
break;
case 10: // Tecla 0
Serial.println("0");
break;
case 11: // Tecla *
Serial.println("*");
break;
case 12: // Tecla #
Serial.println("#");
break;
}
digitalWrite(RELE1, RELE1_STATE);//Liga ou desliga o Relé1 conforme o estado (HIGH/ LOW)
// Zeram-se todas as variáveis
tecla = 0;
bit01 = 0;
bit02 = 0;
bit03 = 0;
bit04 = 0;
bitStd= 0;
delay (500); // Aguarda 500 milissegundos
} // Sai do switch
} // Volta pro loop...
/* --------------------------------------------- * Teste EthernetShield V1.0 Rev0.0 * Arduino-ce * Comunidade Cearense de Hardware Livre * http://groups.google.com/group/arduino-ce?hl=pt-br * http://arduino-ce.blogspot.com * janeiro de 2011 ---------------------------------------------*/ #include <Ethernet.h>//Biblioteca EthernetShield #define SAMPLES 500 //Número de amostras de temperaturas #define sensortemp 0 //Pino analógico em que estará conectado o sensor LM35 int tempvector[SAMPLES]; //Vetor que armazenará as temperaturas double tempSensor = 0.0; //Variável auxiliar int valAnalog = 0; // Variável para aramazenar a leitura do sensor LM35 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Define o endereço físico da placa byte ip[] = { 192, 168, 1, 15 }; // Ip da EthernetShield byte gateway[] = { 192, 168, 1, 1 }; // Gateway (opcional) byte subnet[] = { 255, 255, 255, 0 }; // Mascara de subrede Server server(80); //Cria o objeto na porta 80 void setup() { Ethernet.begin(mac, ip, gateway, subnet); //Inicializando a ethernet server.begin(); //Inicializando o servidor web } void loop() { Client client = server.available(); // if (client) { // uma requisição http termina com uma linha em branco boolean current_line_is_blank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // Recebe caractere do browser e guarda em "c" // Se chegamos ao fim da linha (recebeu uma nova linha // de caractere) e a linha está em branco, a requisição http termina // para que possamos enviar uma resposta! if (c == '\n' && current_line_is_blank) { // Envia um cabeçalho padrão de resposta HTTP client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); break; } if (c == '\n') { // Se começamos uma nova linha... current_line_is_blank = true; } else if (c != '\r') { // Se ainda temos um caractere na linha atual... current_line_is_blank = false; } } } client.println("<html>"); //Início do código HTML
client.println("Arduino na web!");
client.println("</html>"); //Fim do código HTML
}
// Damos ao navegador um tempo para receber os dados
delay(1);
client.stop();// Fecha a conexão
}
/* --------------------------------------------- * WebTemp V1.0 Rev0.0 * Monitor de temperatura via TCP/IP * Arduino-ce * Comunidade Cearense de Hardware Livre * http://groups.google.com/group/arduino-ce?hl=pt-br * http://arduino-ce.blogspot.com * janeiro de 2011 ---------------------------------------------*/ #include <Ethernet.h>//Biblioteca EthernetShield #define SAMPLES 500 //Número de amostras de temperaturas #define sensortemp 0 //Pino analógico em que estará conectado o sensor LM35 int tempvector[SAMPLES]; //Vetor que armazenará as temperaturas double tempSensor = 0.0; //Variável auxiliar int valAnalog = 0; // Variável para aramazenar a leitura do sensor LM35 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Define o endereço físico da placa byte ip[] = { 192, 168, 1, 15 }; // Ip da EthernetShield byte gateway[] = { 192, 168, 1, 1 }; // Gateway (opcional) byte subnet[] = { 255, 255, 255, 0 }; // Mascara de subrede Server server(80); //Cria o objeto na porta 80 void setup() { Ethernet.begin(mac, ip, gateway, subnet); //Inicializando a ethernet server.begin(); //Inicializando o servidor web } void loop() { Client client = server.available(); // if (client) { // uma requisição http termina com uma linha em branco boolean current_line_is_blank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // Recebe caractere do browser e guarda em "c" // Se chegamos ao fim da linha (recebeu uma nova linha // de caractere) e a linha está em branco, a requisição http termina // para que possamos enviar uma resposta! if (c == '\n' && current_line_is_blank) { // envia um cabeçalho padrão de resposta HTTP client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); break; } if (c == '\n') { // Se começamos uma nova linha... current_line_is_blank = true; } else if (c != '\r') { // Se ainda temos um caractere na linha atual... current_line_is_blank = false; } } } client.println("<html>"); //Início do código HTML client.println("<font face='arial' size='4' color='green' >WEBTEMP V1.0</font><hr>"); //Exibe texto com formatação for (int i=0; i <= SAMPLES; i++) // Incrementa i ate i = SAMPLES { valAnalog = analogRead(sensortemp); // Leitura do pino analogico correspondente ao sensor e guarda em valAnalog tempvector[i] =( 5.0 * valAnalog * 100.0)/1024.0; //Armazena as temperaturas num vetor de tamanho = SAMPLES tempSensor = tempSensor +tempvector[i]; // Soma as temperaturas e armazena em tempSensor } tempSensor = tempSensor/SAMPLES; // Calcula a média das temperaturas e as armazena em 'tempSensor'
client.println("<h1>"); //Inicio do cabeçalho H1 client.print(tempSensor); //Exibe a temperatura
client.print("°"); // Referência do caratere(graus º) na codificação Latin-1 (ISO-8859-1)
client.println("C" </h1><br>);// Exibe o "C" e finaliza a tag H1
client.println("<input type='button' value='Refresh' onClick='window.location.href=window.location.href'>");
client.println("</html>"); //Fim do código HTML
}
// Damos ao navegador um tempo para receber os dados
delay(1);
client.stop();// Fecha a conexão
}
Figura5 - WebTemp em funcionamento |