Resultados da busca - %E6%96%B0%E4%B8%96%E4%BD%B3%E7%BD%91%E8%BF%9D%E6%B3%95%E5%90%97%E3%80%90%E2%94%8B%E8%81%94%E7%B3%BB46%E2%92%8B1%E2%92%8D85(%E6%89%A3)%E3%80%93%E3%80%91
logy/rest/1.0/file/get/1798908783?profile=original
também não funcionou!!
Aliás, as pastas de instalação do meu arduino ide não tem a pasta Utility citada no tutorial, pelo menos não como foi citada: Arduino\Libraries>Ethernet>Utility
No meu caso, tenho uma pasta Utility no seguinte caminho: Arduino\libraries\Ethernet\src\utility
Seria para substituir os arquivos nesta pasta?
De qualquer forma, já tentei fazer isso e sempre dá um erro na hora de compilar o código, que é o seguinte:
INICIO
Arduino: 1.6.4 (Windows 8.1), Placa:"Arduino Uno"
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'int EthernetClass::begin(uint8_t*)':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:19:24: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress, IPAddress)':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:68:24: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'int EthernetClass::maintain()':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:89:30: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'IPAddress EthernetClass::localIP()':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:107:24: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'IPAddress EthernetClass::subnetMask()':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:116:24: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp: In member function 'IPAddress EthernetClass::gatewayIP()':C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Ethernet.cpp:125:24: error: 'SPI_ETHERNET_SETTINGS' was not declared in this scope SPI.beginTransaction(SPI_ETHERNET_SETTINGS); ^Erro compilando.
Este relatório deveria ter mais informações "Mostrar saída verbosa durante a compilação" habilitado em Arquivo > Preferências.
FIM
O Sketch que estou tentando carregar ou compilar é esse:
#include <SPI.h>#include <Ethernet.h>// Enter a MAC address and IP address for your controller below.// The IP address will be dependent on your local network:byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x83, 0xEA };IPAddress ip(192,168,0,120);
// Initialize the Ethernet server library// with the IP address and port you want to use // (port 80 is default for HTTP):EthernetServer server(80);int LEDpin = 13;String readString = String(30);String state = String(3);
void setup(){// start the Ethernet connection and the server:Ethernet.begin(mac, ip);
//Configura o PINO 13 com saída pinMode(LEDpin,OUTPUT);
//Iniciar o PINO 8 0VdigitalWrite(LEDpin,LOW);state = "OFF";}void loop(){// listen for incoming clients//server.available()= Ler total de bytes disponível no bufferEthernetClient client = server.available();
if (client) {// an http request ends with a blank lineboolean currentLineIsBlank = true;// client.connected() = verifica se está conectado 1 0u 0
while (client.connected()) {
if (client.available()) {//mostra o códico ASCII decimal do q está lendo char c = client.read();
// if you've gotten to the end of the line (received a newline// character) and the line is blank, the http request has ended,// so you can send a replyif (readString.length() < 30) {readString.concat(c);}if (c == '\n' && currentLineIsBlank) {// send a standard http response headerint LED = readString.indexOf("LED=");if (readString.substring(LED,LED+5) == "LED=T") {digitalWrite(LEDpin,HIGH);state = "ON";}else if (readString.substring(LED,LED+5) == "LED=F") {digitalWrite(LEDpin,LOW);state = "OFF";}
client.println("HTTP/1.1 200 OK");client.println("Content-Type: text/html");client.println();
client.print("LED is ");client.print(state);client.print("<br><br>");
if (state == "ON") {client.println("<a href=\"./?LED=F\">Turn Off<a>");}else {client.println("<a href=\"./?LED=T\">Turn On<a>");}
break;}if (c == '\n') {// you're starting a new linecurrentLineIsBlank = true;} else if (c != '\r') {// you've gotten a character on the current linecurrentLineIsBlank = false;}}}// give the web browser time to receive the datadelay(1);readString = "";// close the connection:client.stop();}}
Se puderem me ajudar, fico muito agradecido.
Tenho um Ethernet Shield que parece não funcionar. Daí comprei um Garagino + Mini Ethernet Garagino e também continuo com problemas para fazer alguns testes. :(
…
só não sei como isso teria que ficar no código.
Segue o trecho do código , se alguém puder ajudar. VALEU.
#include <SPI.h>#include <Client.h>#include <Ethernet.h>#include <Server.h>
//DETERMINA O END MAC byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte ip[] = { 192, 168, 0, 20};//PORTA DE COMUNICAÇÃO EthernetServer server(80);//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS LEDESint ledPin8 = 9; int ledPin7 = 8; int ledPin6 = 7; int ledPin5 = 6; int ledPin1 = 5; int ledPin2 = 4;int ledPin3 = 3;int ledPin4 = 2;
//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS SENSORESconst int sensorchama = A5;//*ESSE TERIA QUE SER DITAL* Numero do pino do Sensor de chama const int buzzer = A4; //*ESSE TERIA QUE SER DITAL* Número do pino do buzzer const int gas = A3; //*ESSE TERIA QUE SER DITAL* Número do pino do sensor de gás DIGITALconst int gass = A2; //*ESSE JÁ É ANALOGICO* Número do pino do sensor de gás ANALOGICOint nivel_sensor = 250;
// Variaveisint SensorState = 0; // Variável de leitura do status do sensor
String readString = String(30);
boolean LEDON1 = false; boolean LEDON2 = false; boolean LEDON3 = false;boolean LEDON4 = false;boolean LEDON5 = false; boolean LEDON6 = false; boolean LEDON7 = false;boolean LEDON8 = false;
void setup(){ Serial.begin(9600); Ethernet.begin(mac, ip); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(ledPin6, OUTPUT); pinMode(ledPin7, OUTPUT); pinMode(ledPin8, OUTPUT); pinMode(buzzer, OUTPUT); // *COMO FICARIA AQUI* pinMode(sensorchama, INPUT);// *COMO FICARIA AQUI* pinMode(gas, INPUT);// *COMO FICARIA AQUI* pinMode(gass, INPUT); }
void loop(){ EthernetClient client = server.available(); SensorState = digitalRead(buzzer);
// Verifica se o sensor detectou chamas if (SensorState == HIGH) { // Liga o Led digitalWrite(buzzer, HIGH); } else { // Desliga o Led digitalWrite(buzzer, LOW); } // Le os dados do pino digital D0 do sensor int valor_digital = digitalRead(gas); // Le os dados do pino analogico A0 do sensor int valor_analogico = analogRead(gass); // Mostra os dados no serial monitor Serial.print("Pino D0 : "); Serial.print(valor_digital); Serial.print(" Pino A0 : "); Serial.println(valor_analogico); // Verifica o nivel de gas/fumaca detectado if (valor_analogico > nivel_sensor) { // Liga o buzzer digitalWrite(buzzer, HIGH);
} else { // Desliga o buzzer digitalWrite(buzzer, LOW); } delay(100);…
Adicionado por Argel Galante ao 15:32 em 15 abril 2015
só não sei como isso teria que ficar no código.
Segue o trecho do código , se alguém puder ajudar. VALEU.
#include <SPI.h>#include <Client.h>#include <Ethernet.h>#include <Server.h>
//DETERMINA O END MAC byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte ip[] = {192, 168, 0, 20};//PORTA DE COMUNICAÇÃO EthernetServer server(80);//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS LEDESint ledPin8 = 9; int ledPin7 = 8; int ledPin6 = 7; int ledPin5 = 6; int ledPin1 = 5; int ledPin2 = 4;int ledPin3 = 3;int ledPin4 = 2;
//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS SENSORESconst int sensorchama = A5;//*ESSE TERIA QUE SER DITAL* Numero do pino do Sensor de chama const int buzzer = A4; //*ESSE TERIA QUE SER DITAL* Número do pino do buzzer const int gas = A3; //*ESSE TERIA QUE SER DITAL* Número do pino do sensor de gás DIGITALconst int gass = A2; //*ESSE JÁ É ANALOGICO* Número do pino do sensor de gás ANALOGICOint nivel_sensor = 250;
// Variaveisint SensorState = 0; // Variável de leitura do status do sensor
String readString = String(30);
boolean LEDON1 = false; boolean LEDON2 = false; boolean LEDON3 = false;boolean LEDON4 = false;boolean LEDON5 = false; boolean LEDON6 = false; boolean LEDON7 = false;boolean LEDON8 = false;
void setup(){Serial.begin(9600);Ethernet.begin(mac, ip);pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(ledPin6, OUTPUT);pinMode(ledPin7, OUTPUT);pinMode(ledPin8, OUTPUT); pinMode(buzzer, OUTPUT); // *COMO FICARIA AQUI*pinMode(sensorchama, INPUT);// *COMO FICARIA AQUI*pinMode(gas, INPUT);// *COMO FICARIA AQUI*pinMode(gass, INPUT);}
void loop(){EthernetClient client = server.available();SensorState = digitalRead(buzzer);
// Verifica se o sensor detectou chamasif (SensorState == HIGH) { // Liga o Led digitalWrite(buzzer, HIGH); } else { // Desliga o LeddigitalWrite(buzzer, LOW); }// Le os dados do pino digital D0 do sensorint valor_digital = digitalRead(gas);// Le os dados do pino analogico A0 do sensorint valor_analogico = analogRead(gass);// Mostra os dados no serial monitorSerial.print("Pino D0 : ");Serial.print(valor_digital);Serial.print(" Pino A0 : ");Serial.println(valor_analogico);// Verifica o nivel de gas/fumaca detectadoif (valor_analogico > nivel_sensor){// Liga o buzzer digitalWrite(buzzer, HIGH);
}else{// Desliga o buzzerdigitalWrite(buzzer, LOW);}delay(100);…
Adicionado por Argel Galante ao 15:33 em 15 abril 2015
=============>
#include <SPI.h>
#include <Ethernet.h>#include <SD.h>#include <RelayBoard.h>// size of buffer used to capture HTTP requests#define REQ_BUF_SZ 60#define date 6#define strobe 3#define clock 2#define numberboards 1
RelayBoard relay(date, strobe, clock, numberboards);
int i;int j;
// MAC address from Ethernet shield sticker under boardbyte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x42, 0x3E };IPAddress ip(192,168,2,99); // IP address, may need to change depending on networkEthernetServer server(80); // create a server at port 80File webFile; // the web page file on the SD cardchar HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated stringchar req_index = 0; // index into HTTP_req bufferboolean LED_state[6] = {0}; // stores the states of the LEDs
void setup(){ // disable Ethernet chip pinMode(10, OUTPUT); digitalWrite(10, HIGH); Serial.begin(9600); // for debugging // initialize SD card Serial.println("Initializing SD card..."); if (!SD.begin(4)) { Serial.println("ERROR - SD card initialization failed!"); return; // init failed } Serial.println("SUCCESS - SD card initialized."); // check for index.htm file if (!SD.exists("index.htm")) { Serial.println("ERROR - Can't find index.htm file!"); return; // can't find index file } Serial.println("SUCCESS - Found index.htm file."); // switch on pin 2 pinMode(A2, INPUT); pinMode(A3, INPUT); // LEDs Ethernet.begin(mac, ip); // initialize Ethernet device server.begin(); // start to listen for clients}
void loop(){ EthernetClient client = server.available(); // try to get client
if (client) { // got client? boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { // client data available to read char c = client.read(); // read 1 byte (character) from client // limit the size of the stored received HTTP request // buffer first part of HTTP request in HTTP_req array (string) // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1) if (req_index < (REQ_BUF_SZ - 1)) { HTTP_req[req_index] = c; // save HTTP request character req_index++; } // last line of client request is blank and ends with \n // respond to client only after last line received if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); // remainder of header follows below, depending on if // web page or XML page is requested // Ajax request - send XML file if (StrContains(HTTP_req, "ajax_inputs")) { // send rest of HTTP header client.println("Content-Type: text/xml"); client.println("Connection: keep-alive"); client.println(); SetLEDs(); // send XML file containing input states XML_response(client); } else { // web page request // send rest of HTTP header client.println("Content-Type: text/html"); client.println("Connection: keep-alive"); client.println(); // send web page webFile = SD.open("index.htm"); // open web page file if (webFile) { while(webFile.available()) { client.write(webFile.read()); // send web page to client } webFile.close(); } } // display received HTTP request on serial port Serial.print(HTTP_req); // reset buffer index and all buffer elements to 0 req_index = 0; StrClear(HTTP_req, REQ_BUF_SZ); break; } // every line of text received from the client ends with \r\n if (c == '\n') { // last character on line of received text // starting new line with next character read currentLineIsBlank = true; } else if (c != '\r') { // a text character was received from client currentLineIsBlank = false; } } // end if (client.available()) } // end while (client.connected()) delay(1); // give the web browser time to receive the data client.stop(); // close the connection } // end if (client)}
// checks if received HTTP request is switching on/off LEDs// also saves the state of the LEDsvoid SetLEDs(void){ // LED 1 (pin 6) if (StrContains(HTTP_req, "LED1=1")) { LED_state[0] = 1; // save LED state relay.set(0,0,1); } else if (StrContains(HTTP_req, "LED1=0")) { LED_state[0] = 0; // save LED state relay.set(0,0,0); } // LED 2 (pin 7) if (StrContains(HTTP_req, "LED2=1")) { LED_state[1] = 1; // save LED state relay.set(0,1,1); } else if (StrContains(HTTP_req, "LED2=0")) { LED_state[1] = 0; // save LED state relay.set(0,1,0); } // LED 3 (pin 8) if (StrContains(HTTP_req, "LED3=1")) { LED_state[2] = 1; // save LED state relay.set(0,2,1); } else if (StrContains(HTTP_req, "LED3=0")) { LED_state[2] = 0; // save LED state relay.set(0,2,0); } // LED 4 (pin 9) if (StrContains(HTTP_req, "LED4=1")) { LED_state[3] = 1; // save LED state relay.set(0,3,1); } else if (StrContains(HTTP_req, "LED4=0")) { LED_state[3] = 0; // save LED state relay.set(0,3,0); } // LED 5 (pin 5) if (StrContains(HTTP_req, "LED5=1")) { LED_state[4] = 1; // save LED state relay.set(0,4,1); } else if (StrContains(HTTP_req, "LED5=0")) { LED_state[4] = 0; // save LED state relay.set(0,4,0); } // LED 6 (pin 3) if (StrContains(HTTP_req, "LED6=1")) { LED_state[5] = 1; // save LED state relay.set(0,5,1); } else if (StrContains(HTTP_req, "LED6=0")) { LED_state[5] = 0; // save LED state relay.set(0,5,0); }}
// send the XML file with analog values, switch status// and LED statusvoid XML_response(EthernetClient cl){ cl.println("<?xml version = \"1.0\" ?>"); cl.println("<inputs>"); // read analog inputs cl.print("<analog>"); cl.print(analogRead(4)); cl.println("</analog>"); cl.print("<analog>"); cl.print(analogRead(5)); cl.println("</analog>");
// read switches cl.print("<switch>"); if (digitalRead(2)) {cl.print("ON");} else {cl.print("OFF");} cl.println("</switch>"); cl.print("<switch>"); if (digitalRead(A2)) {cl.print("ON");} else {cl.print("OFF");} cl.println("</switch>"); cl.print("<switch>"); if (digitalRead(A3)) {cl.print("ON");} else {cl.print("OFF");} cl.println("</switch>"); // checkbox LED states // LED1 cl.print("<LED>"); if (LED_state[0]) {cl.print("checked");} else {cl.print("unchecked");} cl.println("</LED>"); // LED2 cl.print("<LED>"); if (LED_state[1]) {cl.print("checked");} else {cl.print("unchecked");} cl.println("</LED>"); // LED3 cl.print("<LED>"); if (LED_state[2]) {cl.print("on");} else {cl.print("off");} cl.println("</LED>"); // LED4 cl.print("<LED>"); if (LED_state[3]) {cl.print("on");} else {cl.print("off");} cl.println("</LED>"); // LED5 cl.print("<LED>"); if (LED_state[4]) {cl.print("on");} else {cl.print("off");} cl.println("</LED>"); // LED6 cl.print("<LED>"); if (LED_state[5]) {cl.print("on");} else {cl.print("off");} cl.println("</LED>"); cl.print("</inputs>");}
// sets every element of str to 0 (clears array)void StrClear(char *str, char length){ for (int i = 0; i < length; i++) { str[i] = 0; }}
// searches for the string sfind in the string str// returns 1 if string found// returns 0 if string not foundchar StrContains(char *str, char *sfind){ char found = 0; char index = 0; char len;
len = strlen(str); if (strlen(sfind) > len) { return 0; } while (index < len) { if (str[index] == sfind[found]) { found++; if (strlen(sfind) == found) { return 1; } } else { found = 0; } index++; }
return 0;}
<==================================================>
<==================================================>
Quero adicionar esses dois arquivos que ficaram junto com o index no micro sd
"jquery.accordion.js"
"jquery.easing.1.3"…
se sim acende se não você pode pular para o próximo menu acender a luz do quarto .) mais coloquei outros menus como aumentar volume ou abaixar e aumentar ou abaixar a temperatura do ar-condicionado com o led ir emissor maisai encontrei um problema quando altero o volume automaticamente altera o da temperatura e não estou conseguindo separar esses parâmetros ..
Abaixo segue o sketch :
#include <LiquidCrystal.h>
#include <IRremote.h>
IRsend irsend; // Variável para poder enviar o código a TV
const int ledIR = 13; // Pino onde iremos conectar o LED emissor de infravermelho
int armazenavalor = 0;
// Pinos de controle dos reles
int pinorele1 = 10; //Pino do Arduino ligado ao IN1 da placa de relés
int pinorele2 = 9; //Pino do Arduino ligado ao IN2 da placa de relés
int pinorele3 = 8; //Pino do Arduino ligado ao IN3 da placa de relés
int pinorele4 = 7; //Pino do Arduino ligado ao IN4 da placa de relés
int estadorele1 = HIGH; //Armazena o estado do relé 1
int estadorele2 = HIGH; //Armazena o estado do relé 2
int estadorele3 = HIGH; //Armazena o estado do relé 3
int estadorele4 = HIGH; //Armazena o estado do relé 4
// Definição dos pinos dos botões
#define bMenu A0 // Os pinos analógicos podem ser
#define bChange A1 // usados como digitais, bastando
#define bUp A2 // referenciá-los por A0, A1..
#define bDown A3
#define bMenu0 90 // Valor de referência que a
#define bChange0 91 // função CheckButton() passa
#define bUp0 92 // indicando que um botão foi
#define bDown0 93 // solto
boolean aMenu, aChange, aUp, aDown; // Grava o ultimo valor lidos nos botões.
// Utilizado pela função Checkbutton p/ identificar quando há uma alteração no estado do pino dos botões
int variavel; // variavel a ser alterada pelo menu
char state=1; // variável que guarda posição atual do menu
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Declaração do objeto tipo lcd
//============================================== SETUP
void setup()
{
pinMode(ledIR ,OUTPUT); // Definimos o LED de infra como de saída
Serial.begin(9600); // Iniciamos o Serial Monitor
lcd.begin(16, 2); // Iniciando a biblioteca do LCD
pinMode(bMenu, INPUT); // Botões
pinMode(bChange,INPUT);
pinMode(bUp, INPUT);
pinMode(bDown, INPUT);
digitalWrite(bMenu, HIGH); // Aciona o pull-up interno
digitalWrite(bChange,HIGH); // dos botões
digitalWrite(bUp, HIGH);
digitalWrite(bDown, HIGH);
pinMode(pinorele1, OUTPUT); //Define os pino dos reles como saída
pinMode(pinorele2, OUTPUT);
pinMode(pinorele3, OUTPUT);
pinMode(pinorele4, OUTPUT);
digitalWrite(pinorele1, estadorele1); //Coloca os pinos dos reles em
digitalWrite(pinorele2, estadorele2); //estado alto (rele desligado)
digitalWrite(pinorele3, estadorele3);
digitalWrite(pinorele4, estadorele4);
}
//==============================================
//============================================== LOOP
void loop()
{
switch (state) { // Define checa qual tela atual
// Tela de controle de acesso
case 1: // executado quando na TELA 1
switch (CheckButton()) {
case bChange:
break;
case bUp:
lcd.clear(); Set_state(1);
break;
case bDown:
lcd.clear(); Set_state(2);
break;
default:
Set_state(1);
}
break;
case 2: // executado quando na TELA 2 APAGAR LUZ ?
switch (CheckButton()) {
case bChange:
estadorele1 = !estadorele1;
//Aciona rele 1 e liga e desliga a luz
digitalWrite(pinorele1, estadorele1);
break;
case bUp:
lcd.clear(); Set_state(1);
break;
case bDown:
lcd.clear(); Set_state(3);
break;
default:
Set_state(2);
}
break;
case 3: // executado quando na TELA 3 MODO CINEMA
switch (CheckButton()) {
case bChange:
estadorele2 = !estadorele2;
//Aciona rele 2 e liga o retro projetor
digitalWrite(pinorele2, estadorele2);
break;
case bUp:
lcd.clear(); Set_state(2);
break;
case bDown:
lcd.clear(); Set_state(4);
break;
default:
Set_state(3);
}
break;
case 4: // executado quando na TELA 4 AUMENTAR E ABAIXAR VOLUME
switch (CheckButton()) {
case bMenu:
if (digitalRead(bMenu) == HIGH)
{
irsend.sendRC6(0x80542711, 36); } // Código que será enviado a TV para aumentar o volume
lcd.clear(); variavel++;
break;
case bChange:
if (digitalRead(bChange) == HIGH)
{
irsend.sendRC6(0x80542710, 36); } // Código que será enviado a TV para diminuir o volume
lcd.clear(); variavel--;
break;
case bUp:
lcd.clear(); Set_state(3);
break;
case bDown:
lcd.clear(); Set_state(5);
break;
default:
Set_state(4);
}
break;
case 5: // executado quando na TELA 5 PASSAR E VOLTAR CANAL
switch (CheckButton()) {
case bChange:
if (digitalRead(bChange) == HIGH) { // Se o botão for pressionado ele irá enviar o código para PASSAR o canal na TV
irsend.sendRC6(0x80542720, 36); }
lcd.clear(); variavel++;
break;
case bMenu:
if (digitalRead(bMenu) == HIGH) {
irsend.sendRC6(0x8054A721, 36); } // Se o botão for pressionado ele irá enviar o código para diminuir o canal na TV
lcd.clear(); variavel--;
break;
case bUp:
lcd.clear(); Set_state(4);
break;
case bDown:
lcd.clear(); Set_state(6);
break;
default:
Set_state(5);
}
break;
case 6: // executado quando na TELA 3 Ar-condicionado
switch (CheckButton()) {
case bChange:
estadorele3 = !estadorele3;
//Aciona rele 3 e liga o retro projetor
digitalWrite(pinorele3, estadorele3);
break;
case bUp:
lcd.clear(); Set_state(5);
break;
case bDown:
lcd.clear(); Set_state(7);
break;
default:
Set_state(6);
}
break;
case 7: // executado quando na TELA 5 Abaixar e aumentar o frio
switch (CheckButton()) {
case bChange:
if (digitalRead(bChange) == HIGH) { // Se o botão for pressionado ele irá enviar o código para PASSAR o canal na TV
irsend.sendNEC(0xFFE01F, 32); }
lcd.clear(); variavel++;
break;
case bMenu:
if (digitalRead(bMenu) == HIGH) {
irsend.sendNEC(0xFFA857, 32); } // Se o botão for pressionado ele irá enviar o código para diminuir o canal na TV
lcd.clear(); variavel--;
break;
case bUp:
lcd.clear(); Set_state(6);
break;
case bDown:
lcd.clear(); Set_state(7);
break;
default:
Set_state(7);
}
}
}
//============================================== FIM da função LOOP
//==============================================
//============================================== CheckButton
char CheckButton() {
if (aMenu!=digitalRead(bMenu)) {
aMenu=!aMenu;
if (aMenu) return bMenu0; else return bMenu;
} else
if (aChange!=digitalRead(bChange)) {
aChange=!aChange;
if (aChange) return bChange0; else return bChange;
} else
if (aUp!=digitalRead(bUp)) {
aUp=!aUp;
if (aUp) return bUp0; else return bUp;
} else
if (aDown!=digitalRead(bDown)) {
aDown=!aDown;
if (aDown) return bDown0; else return bDown;
} else
return 0;
}
//========================================================
//============================================== Set_state
void Set_state(char index) {
state = index; // Atualiza a variável state para a nova tela
switch (state) { // verifica qual a tela atual e exibe o conteúdo correspondente
case 1: //==================== state 1
lcd.setCursor(0,0);
lcd.print("Controle Acessos");
lcd.setCursor(6,1);
lcd.print( "MENU"); // mostra os segundos na tela
break;
case 2: //==================== state 2
lcd.setCursor(0,0);
lcd.print("Estado");
lcd.setCursor(2,1);
lcd.print("da Luz ?");
break;
case 3: //==================== state 3
lcd.setCursor(2,0);
lcd.print("Modo Cinema");
lcd.setCursor(5,1);
lcd.print("Acessar ?");
break;
case 4: //==================== state 4
lcd.setCursor(0,0);
lcd.print("Volume:");
lcd.setCursor(0,1);
lcd.print(variavel, DEC); // mostra o valor de "variavel"
break;
case 5: //==================== state 5
lcd.setCursor(0,0);
lcd.print("Canal:");
lcd.setCursor(0,1);
lcd.print(variavel, DEC); // mostra o valor de "variavel"
break;
case 6: //==================== state 6
lcd.setCursor(0,0);
lcd.print("Ar-condicionado");
lcd.setCursor(5,1);
lcd.print("Estado ?");
break;
case 7: //==================== state 7
lcd.setCursor(0,0);
lcd.print("Temperatura:");
lcd.setCursor(0,1);
lcd.print(variavel, DEC); // mostra o valor de "variavel"
break;
default: ;
}
}
se tiver uma ideia sera bem vinda kk
ISSO TA BASTANTE INTERESSANTE KK
…
usuário da rede via navegador de internet.
O problema é que os valores que o Raspberry Pi mostra no navegador são valores que estavam em seu buffer, ou seja, não está mostrando a leitura do Arduino em tempo real :(
Já tentei apagar o buffer antes de enviar a leitura para o HTML com o comando "serialFromArduino.flushInput()" e também já tentei usar "serialFromArduino.readline(1)", mas quando faço isso não dá tempo de gravar todas as variáveis e mandar pro HTML pra serem exibidas o que gera erro no browser. Tentei usar o "time.sleep(1)" para dar tempo de carregar os dados, mas parece que esse comando impede que o RaspberryPi grave os valores nesse espaço de tempo. Não sei o que fazer para resolver esse problema,se alguém consegui me ajudar ficarei muito grato.
Segue os programas:
ARDUINO
void setup() {
// inicializa comunicacao serial a 9600 bps:
Serial.begin(9600);
// configura os 14 canais digitais como entrada:
for (int canalDigital = 0; canalDigital < 14; canalDigital++) {
pinMode(canalDigital, INPUT);
}
}
// leitura das entradas em loop:
void loop() {
// le todas entradas analogicas:
for (int canalAnalogico = 0; canalAnalogico < 6; canalAnalogico++) {
int leituraSensor = analogRead(canalAnalogico);
// envia todas leituras analogicas:
Serial.print(leituraSensor);
Serial.print(",");
}
// le todas entradas digitais:
for (int canalDigital = 0; canalDigital < 13; canalDigital++) {
int leituraSensor = digitalRead(canalDigital);
// envia todas leituras digitais:
Serial.print(leituraSensor);
Serial.print(",");
}
// ultima leitura separado para dizer ao raspberry e a string terminou:
Serial.print(digitalRead(13));
Serial.println(",");
delay(1); // atraso entre as leituras para dar estabilidade
}
PROGRAMA EM PYTHON
# configuracao para receber do arduino e mandar para HTML
from flask import Flask, render_template, request
import serial
app = Flask(__name__)
port = "/dev/ttyACM0"
serialFromArduino = serial.Serial(port,9600)
serialFromArduino.flushInput()
# inicio do programa
@app.route("/")
def main():
# salva a string q o arduino mandou e entrada
entrada = serialFromArduino.readline()
# divide a string usando a virgula como referencia
dados = entrada.split(',')
# salva os 6 valores analogicos e 14 digitais em 20 variaveis
A0 = int(dados[0])
A1 = int(dados[1])
A2 = int(dados[2])
A3 = int(dados[3])
A4 = int(dados[4])
A5 = int(dados[5])
D0 = int(dados[6])
D1 = int(dados[7])
D2 = int(dados[8])
D3 = int(dados[9])
D4 = int(dados[10])
D5 = int(dados[11])
D6 = int(dados[12])
D7 = int(dados[13])
D8 = int(dados[14])
D9 = int(dados[15])
D10 = int(dados[16])
D11 = int(dados[17])
D12 = int(dados[18])
D13 = int(dados[19])
# manda os valores salvos para o template HTML
templateData = {
'A0' : A0,
'A1' : A1,
'A2' : A2,
'A3' : A3,
'A4' : A4,
'A5' : A5,
'D0' : D0,
'D1' : D1,
'D2' : D2,
'D3' : D3,
'D4' : D4,
'D5' : D5,
'D6' : D6,
'D7' : D7,
'D8' : D8,
'D9' : D9,
'D10' : D10,
'D11' : D11,
'D12' : D12,
'D13' : D13,
}
return render_template('main.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
HTML
<!DOCTYPE html>
<head>
<title>TITULO</title>
</head>
<body>
<p>Valor analógico A0: {{ A0 }}</p>
<p>Valor analógico A1: {{ A1 }}</p>
<p>Valor analógico A2: {{ A2 }}</p>
<p>Valor analógico A3: {{ A3 }}</p>
<p>Valor analógico A4: {{ A4 }}</p>
<p>Valor analógico A5: {{ A5 }}</p>
<p>Valor digital 0: {{ D0 }}</p>
<p>Valor digital 1: {{ D1 }}</p>
<p>Valor digital 2: {{ D2 }}</p>
<p>Valor digital 3: {{ D3 }}</p>
<p>Valor digital 4: {{ D4 }}</p>
<p>Valor digital 5: {{ D5 }}</p>
<p>Valor digital 6: {{ D6 }}</p>
<p>Valor digital 7: {{ D7 }}</p>
<p>Valor digital 8: {{ D8 }}</p>
<p>Valor digital 9: {{ D9 }}</p>
<p>Valor digital 10: {{ D10 }}</p>
<p>Valor digital 11: {{ D11 }}</p>
<p>Valor digital 12: {{ D12 }}</p>
<p>Valor digital 13: {{ D13 }}</p>
</body>
</html>…
Adicionado por Odail Cardoso ao 17:37 em 12 janeiro 2015
l dúvida é em relação ao menu do LCD onde pretendo ter na primeira tela após ser acionado por um botão "bverde" uma mensagem com o nome da máquina passando então 1 segundo irá mostrar a quantidade a ser envasada. A quantidade será o valor digitado no Keypad;
- Após o valor ser digitado pelo keypad uma segunda tela é mostrada, nessa tela será contada a quantidade de envasada e pressionando o "bamarelo" muda a tela para a terceira tela onde irá mostrar o nível do tanque de armazenamento, pressionando o "bamarelo" novamente ele volta para a segunda tela, ou seja o "bamarelo" irá funcionar como um botão de opões que transita entre essas duas telas;- Usando um decrementador quero que o mesmo decremente o valor digitado na tela 1 mostrando a mensagem de que o Lote esta pronto e que se deve inserir um novo valor;- Um terceiro botão "bvermelho" seria o botão de emergência, ou seja se pressionado a máquina trava.- Todo esse programa foi baseado em exemplos e projetos que encontrei aqui no fórum e em outros sites.
Como devo organizar os botões para agirem desta maneira ? Pois eles estão executando as ações que defini mais não da maneira que descrevi acima.
Segue o Programa:
//========================================================================#include <Keypad.h>#include <LiquidCrystal.h> LiquidCrystal lcd(22,23,24,25,26,27); // DECLARAÇÃO DOS PINOS DO LCD NO ARDUINO// DEFINIÇÃO DOS BOTÕES - VERDE. VERMELHO, AMARELO#define bverde A1 // Os pinos analógicos podem ser#define bamarelo A2 // usados como digitais, bastando#define bvermelho A3 // referenciá-los por A0, A1..#define bDown A4#define bverde0 90 // Valor de referência que a#define bamarelo0 91 // função CheckButton() passa#define bvermelho0 92 // indicando que um botão foi#define bDown0 93 // soltoboolean averde, aamarelo, avermelho, aDown; // Grava o ultimo valor lidos nos botões.// Utilizado pela função Checkbutton p/ identificar quando há uma alteração no estado do pino dos botões// DEFINIÇÃO DOS PINOS E VALORES PARA O SENSOR, ESTEIRA E BOMBAint contador = 0; int Sensor = 0; int sensorPin = A0; int MotorEsteira = 11;int MotorBomb= 12;int EstadoMotor=0;int EstadoSensor=1;int LED1=8;int LED2=9;int LED3=10;int LED4=2;int buzzer=7;int variavel; // VARIAVEL A SER ALTERADA PELO MENUchar state=1; // VARIÁVEL QUE GUARDA POSIÇÃO ATUAL DO MENUint dec=-1;int i=0;const byte LIN = 4; // TECLADO POSSUI 4 LINHASconst byte COL = 3; //TECLADO POSSUI 3 COLUNASchar keys[LIN][COL] = { {//MATRIZ CORRESPONDENTE AOS CARACTERES DO KEYPAD '1','2','3' }, {'4','5','6' },{'7','8','9' },{'*','0','#' }};byte LinPins[LIN] = {28,29,30,31}; //PINOS DO ARDUINO CORRESPONDENTES AS COLUNASbyte ColPins[COL] = {32,33,34}; //E AS LINHAS DA MATRIZKeypad keypad = Keypad( makeKeymap(keys), LinPins, ColPins, LIN, COL );char key = keypad.getKey();void setup(){lcd.begin(16, 2); // Iniciando a biblioteca do LCDSerial.begin(9600); // DEFINIÇÃO DA PORTA SERIALpinMode(bverde, INPUT); // BotõespinMode(bamarelo,INPUT);pinMode(bvermelho, INPUT);pinMode(bDown, INPUT);digitalWrite(bverde, HIGH); // Aciona o pull-up internodigitalWrite(bamarelo,HIGH); // dos botõesdigitalWrite(bvermelho, HIGH);digitalWrite(bDown, HIGH);pinMode(sensorPin, INPUT); //DEFINIR SE A VARIAVEL É ENTRADA(IMPUT) OU SAIDA(OUTPUT) DE DADOSpinMode(MotorEsteira, OUTPUT); pinMode(MotorBomb, OUTPUT);pinMode(EstadoSensor, INPUT);pinMode(LED1, OUTPUT);pinMode(LED2, OUTPUT);pinMode(LED3, OUTPUT);pinMode(LED4, OUTPUT);pinMode(buzzer, OUTPUT);}void loop(){Sensor = digitalRead(sensorPin); // A VARIAVEL SENSOR CORRESPONDE AO sensorPin QUE ESTÁ LIGADO A PORTA ANALÓGICA A0 DO ARDUINif(Sensor == LOW){ digitalWrite(MotorEsteira, HIGH); // SE O SENSOR NÃO ESTIVER ACIONADO O MOTOR DA BOMBA ESTA PARADO E O LED1 ASCESOdigitalWrite(LED1,HIGH); digitalWrite(LED2, LOW);digitalWrite(MotorBomb, LOW);digitalWrite(buzzer, LOW);}if(Sensor == HIGH) { // SE O SENSOR ESTIVER ACIONADO O MOTOR DA ESTEIRA ESTA PARADO E O LED1 APAGAdigitalWrite(MotorEsteira, LOW); // O MOTOR DA BOMBA LIGA E O LED2 ASCENDE E UM TOQUE DE 2 SEGUNDO É digitalWrite(MotorBomb, HIGH); // ACIONADO PELO BUZZER digitalWrite(LED1, LOW);digitalWrite(LED2, HIGH);delay(8000);//ESTE DELAY SERVE PARA A BOMBA JOGAR 200ml DE AGUA NA GARRAFAcontador++;Sensor == !Sensor; //O SINAL DO SENSOR É INVERTIDO PARA A FUNÇAO RETORNAR DE ONDE ESTAVA}EstadoSensor = digitalRead(sensorPin); // O SINAL DO SENSOR É MOSTRADO NO SERIAL MONITOR Serial.println(Sensor);if(EstadoSensor == HIGH){ // A FUNÇAO RETORNA AO ESTADO INICIALdigitalWrite(MotorEsteira, HIGH); digitalWrite(MotorBomb, LOW);digitalWrite(LED1, HIGH);digitalWrite(LED2, LOW);digitalWrite(buzzer,LOW);delay(2000);}switch (state) { // Define checa qual tela atualcase 1: // executado quando na TELA 1switch (CheckButton()) {case bverde:lcd.setCursor(0,0);lcd.print("Maquina Envase");lcd.setCursor(0,2);lcd.print("Eng. Mecatronica");delay(5000);lcd.clear();lcd.setCursor(0,0); lcd.print("Controle Prod.");Set_state(1);break;case bamarelo:lcd.clear(); Set_state(2); // antes de mudar de tela, é necessário limpar obreak; lcd.clear(); Set_state(3); // display com a função lcd.clear()break;lcd.clear(); Set_state(1);break;default: // Caso nenhum botão tenha sido apertado, ela executa a set_stateSet_state(1); // mesmo assim para atualizar o display.}break;case 2: // executado quando na TELA 2switch (CheckButton()) {case bverde: lcd.clear(); Set_state(1);break;case bamarelo: //lcd.clear(); Set_state(3);break;lcd.clear(); Set_state(1);break;lcd.clear(); Set_state(2);break;default:Set_state(2);}break;case 3: // executado quando na TELA 3switch (CheckButton()) {case bverde: lcd.clear(); Set_state(1);case bamarelo:lcd.clear(); Set_state(2);break;lcd.clear(); Set_state(3);break;lcd.clear(); Set_state(1);break;default:Set_state(3);}break;case 4: // executado quando na TELA 4switch (CheckButton()) {case bamarelo:lcd.clear(); Set_state(1);break;default:Set_state(1);}break;default: ;}}// FIM DO LOOPchar CheckButton() { if (averde!=digitalRead(bverde)) { averde=!averde; if (averde) return bverde0; else return bverde;} elseif (aamarelo!=digitalRead(bamarelo)) {aamarelo=!aamarelo;if (aamarelo) return bamarelo0; else return bamarelo;} elseif (avermelho!=digitalRead(bvermelho)) {avermelho=!avermelho;if (avermelho) return bvermelho0; else return bvermelho;} elseif (aDown!=digitalRead(bDown)) {aDown=!aDown;if (aDown) return bDown0; else return bDown;} elsereturn 0;}void PCP() // FUNÇÃO QUE DEFINE A QUANTIDADE DE GARRAFAS A SEREM ENVASADAS NO DIA{char key = keypad.getKey();if (key != NO_KEY){lcd.setCursor(i,2); lcd.print(key);i++;}}void Set_state(char index) {state = index; // Atualiza a variável state para a nova telaswitch (state) { // verifica qual a tela atual e exibe o conteúdo correspondentecase 1: //==================== state 1PCP();break;case 2: //==================== state 2lcd.setCursor(0,0);lcd.print("Qnt. Envasada:");lcd.setCursor(0,1);lcd.print(contador); // mostra os segundos na telalcd.print(" garrafas");delay(20);// if(contador==key){// lcd.setCursor(0,0);// lcd.print("Lote Pronto!");// lcd.setCursor(0,1);// lcd.print("Insira Novo");// }break;case 3: //==================== state 3lcd.setCursor(0,0);lcd.print("Nivel Tanque");lcd.setCursor(1,2);lcd.print("%");break;case 4: //==================== state 4break;default: ;}}…