Boa noite!
Comprei uma placa Wemos ESP8266com a finalidade de ressuscitar uma maquina de lavar roupa que queimou a placa principal.
Não sei o porque, todas as vezes que tento colocar um código mais elaborado e le aparece a seguinte mensagem:
". Variables and constants in RAM (global, static), used 28864 / 80192 bytes (35%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1508 initialized variables
╠══ RODATA 1244 constants
╚══ BSS 26112 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 59951 / 65536 bytes (91%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 27183 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 270176 / 1048576 bytes (25%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 270176 code in flash "
Mas acaba carregando o programa para o esp. Quando liguei o esp com o display i2c ele não apareceu nada no display, já quando carrego um codigo simples, como o exemplo que muda o tempo que o led pisca, esta mensagem não aparece e consigo fazer o controle certinho do tempo do led.
Segue os dois codigos mais complexos, um eu mesmo fiz o outro peguei da internet:
Codigo eu mesmo fiz:
'
#include <Arduino.h>
#include <LiquidCrystal.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
LiquidCrystal lcd(0, 2, 4, 5, 6, 7);
ESP8266WebServer server(80);
int estadoMaquina = 0; // 0: Parado, 1: Executando
bool wifiAtivado = true; // Variável para controlar o estado do Wi-Fi
void setup() {
// Inicialize o display 2x16
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NanoTech");
lcd.setCursor(0, 1);
// Inicialize a conexão Wi-Fi (se ativada)
if (wifiAtivado) {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao Wi-Fi...");
}
Serial.println("Conectado ao Wi-Fi");
}
// Configurar rotas da web para controlar a máquina
server.on("/", HTTP_GET, handleRoot);
server.on("/iniciar", HTTP_GET, handleIniciar);
server.on("/parar", HTTP_GET, handleParar);
server.on("/avancar", HTTP_GET, handleAvancar);
server.on("/voltar", HTTP_GET, handleVoltar);
server.on("/mais", HTTP_GET, handleMais);
server.on("/menos", HTTP_GET, handleMenos);
server.on("/wifi", HTTP_GET, handleWifiToggle); // Rota para ligar/desligar Wi-Fi
server.begin();
Serial.println("Servidor iniciado");
}
void loop() {
server.handleClient();
// Incluir lógica adicional de controle da máquina aqui
}
void handleRoot() {
String status = (estadoMaquina == 0) ? "Parado" : "Executando";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Status: " + status);
lcd.setCursor(0, 1);
lcd.print("Wi-Fi: " + String(wifiAtivado ? "Ligado" : "Desligado")); // Exibe o status do Wi-Fi no display
server.send(200, "text/html", "Painel de Controle
Status: " + status + "
Wi-Fi: " + String(wifiAtivado ? "Ligado" : "Desligado"));
}
void handleIniciar() {
estadoMaquina = 1;
server.send(200, "text/plain", "Iniciando a máquina...");
}
void handleParar() {
estadoMaquina = 0;
server.send(200, "text/plain", "Parando a máquina...");
}
void handleAvancar() {
// Lógica para avançar
}
void handleVoltar() {
// Lógica para voltar
}
void handleMais() {
// Lógica para mais
}
void handleMenos() {
// Lógica para menos
}
void handleWifiToggle() {
wifiAtivado = !wifiAtivado; // Inverte o estado do Wi-Fi
if (wifiAtivado) {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao Wi-Fi...");
}
Serial.println("Conectado ao Wi-Fi");
} else {
WiFi.disconnect(); // Desliga o Wi-Fi
Serial.println("Wi-Fi desligado");
}
server.send(200, "text/plain", "Wi-Fi: " + String(wifiAtivado ? "Ligado" : "Desligado"));
}
'
codigo da internet:
#include <Wire.h> //INCLUSÃO DE BIBLIOTECA
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA
#include <Keypad.h> //INCLUSÃO DE BIBLIOTECA
#define endereco 0x27 // Endereços comuns: 0x27, 0x3F
#define colunas 16
#define linhas 2
const byte qtdLinhas = 4; //QUANTIDADE DE LINHAS DO TECLADO
const byte qtdColunas = 3; //QUANTIDADE DE COLUNAS DO TECLADO
//CONSTRUÇÃO DA MATRIZ DE CARACTERES
char matriz_teclas[qtdLinhas][qtdColunas] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte PinosqtdLinhas[qtdLinhas] = {0, 1, 2}; //PINOS UTILIZADOS PELAS LINHAS
byte PinosqtdColunas[qtdColunas] = {9}; //PINOS UTILIZADOS PELAS COLUNAS
Keypad meuteclado = Keypad( makeKeymap(matriz_teclas), PinosqtdLinhas, PinosqtdColunas, qtdLinhas, qtdColunas);
LiquidCrystal_I2C lcd(endereco, colunas, linhas);
int enche = 200;
int lava = 180;
int bomba = 160;
int centrif = 100;
int buzzer = 3;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
Serial.begin(9600); //INICIALIZA A SERIAL
Serial.println("Aperte uma tecla..."); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.println(); //QUEBRA UMA LINHA NO MONITOR SERIALv
pinMode(buzzer,OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(10, INPUT_PULLUP);
lcd.begin (16,2); //SETA A QUANTIDADE DE COLUNAS(16) E O NÚMERO DE LINHAS(2) DO DISPLAY
lcd.setBacklight(HIGH); //LIGA O BACKLIGHT (LUZ DE FUNDO)
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("MAQUINA PRONTA !"); //IMPRIME O TEXTO NO DISPLAY LCD
lcd.setCursor(1,2); //SETA A POSIÇÃO DO CURSOR
lcd.print("TOQUE P INICIAR"); //IMPRIME O TEXTO NO DISPLAY LCD
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
// the loop function runs over and over again forever
void loop() {
char tecla_pressionada = meuteclado.getKey();
if (tecla_pressionada){ //SE ALGUMA TECLA FOR PRESSIONADA, FAZ
Serial.print("Tecla pressionada : "); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.println(tecla_pressionada); //IMPRIME NO MONITOR SERIAL A TECLA PRESSIONADA
}
if(digitalRead(10) == LOW) // Se o botão for pressionado
{
Encher();
delay(2000);
}
}
void Encher(){ // Função pra ligar as duas válvulas de enchimento de água
while(enche > 0){
enche = enche -1;
lcd.clear();
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("ENCHENDO..."); //IMPRIME O TEXTO NO DISPLAY LCD
lcd.setCursor(1,2); //SETA A POSIÇÃO DO CURSOR
lcd.print(enche); //IMPRIME O TEXTO NO DISPLAY LCD
delay(1000);
digitalWrite(7, LOW); // turn the LED on (HIGH is the voltage level)
if(enche == 0) {
digitalWrite(7, HIGH);
Lavar();
}
}
}
void Lavar(){ // Função pra ligar o motor e lavar a roupa
while(lava > 0){
lava = lava -2;
lcd.clear();
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("LAVANDO..."); //IMPRIME O TEXTO NO DISPLAY LCD
lcd.setCursor(1,2); //SETA A POSIÇÃO DO CURSOR
lcd.print(lava); //IMPRIME O TEXTO NO DISPLAY LCD
delay(500);
digitalWrite(6, LOW);
delay(500);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
digitalWrite(5 , HIGH);
if(lava ==0){
Bomba();
}
}
}
void Bomba(){ // Função pra ligar a bomba e despejar agua
while(bomba > 0) {
bomba = bomba -1;
lcd.clear();
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("DESPEJANDO AGUA..."); //IMPRIME O TEXTO NO DISPLAY LCD
lcd.setCursor(1,2); //SETA A POSIÇÃO DO CURSOR
lcd.print(bomba); //IMPRIME O TEXTO NO DISPLAY LCD
digitalWrite(5 , HIGH);
digitalWrite(6 , HIGH);
delay(1000);
digitalWrite(4, LOW);
if(bomba == 0) {
Centrifugar();
}
}
}
void Centrifugar(){ // Função pra ligar o motor em paralelo a bomba e iniciar a centrigufação
while(centrif > 0) {
centrif = centrif -1;
lcd.clear();
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("CENTRIFUGANDO..."); //IMPRIME O TEXTO NO DISPLAY LCD
lcd.setCursor(1,2); //SETA A POSIÇÃO DO CURSOR
lcd.print(centrif); //IMPRIME O TEXTO NO DISPLAY LCD
digitalWrite(4, LOW);
delay(5000);
digitalWrite(6, LOW);
delay(1000);
if(centrif == 0) {
Acabar();
}
}
}
void Acabar(){ // Função pra ligar o motor em paralelo a bomba e iniciar a centrigufação
Serial.println("Roupa Lavada, programa terminado...!");
digitalWrite(7,HIGH); // DESLIGA
digitalWrite(6, HIGH); // DESLIGA
digitalWrite(5, HIGH); // DESLIGA
digitalWrite(4, HIGH); // DESLIGA
lcd.clear();
lcd.setCursor(0,0); //SETA A POSIÇÃO DO CURSOR
lcd.print("LAVAGEM CONCLUIDA !"); //IMPRIME O TEXTO NO DISPLAY LCD
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
delay(500);
tone(buzzer,900);
delay(500);
noTone(buzzer);
}
<>