Hola! Sigo subiendo mis dudas con la programación de mi máquina expendedora. En este caso hice una combinación de un programa de true false con led y otro de escritura en mi pantalla.
Por separado funcionan bien, pero una vez que los fusiono no lee el pulsador y solo puedo manejarlo desde el boton que trae la placa.
const int buttonPin = 12;
const int oledPin = -1;
int buttonState = 0;
boolean OLED_ON;
boolean FLAG_PULSE;
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
pinMode(oledPin, OUTPUT);
pinMode(buttonPin, INPUT);
OLED_ON = false;
FLAG_PULSE = true;
if (display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
// Display static text
display.println("SU PAGO FUE REALIZADO CORRECTAMENTE");
display.display();
}
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH && OLED_ON == false && FLAG_PULSE == true) {
digitalWrite(oledPin, HIGH);
OLED_ON = true; FLAG_PULSE = false;
}
else if (buttonState == HIGH && OLED_ON == true && FLAG_PULSE == true) {
digitalWrite(oledPin, LOW);
OLED_ON = false;
FLAG_PULSE = false;
}
else if (buttonState == LOW && FLAG_PULSE == false){
FLAG_PULSE = true;
}
}
Representa los dos pines de la pantalla oled. Me han dicho que no es posible poner pines negativos, pero me funciona así y no si pongo los dos números de pines.
La pantalla debería encenderse pulsando el pulsador rodeado en rojo, pero lo hace usando los que están rodeados en verde.
Sí, probé los pines que corresponden a la pantalla pero me detecta error.
Esos botones son el reset y el que habilita la carga de código, no son pulsadores para propósito general.
No se a qué pin intentas acceder pero seguro no es -1 porque no existe, tal vez y con mucha suerte el compilador lo tome como pin 15, pero estoy suponiendo.
El pulsador para mí esta mal conectado (yo lo veo conectado al GPIO14 en lugar del 12) pero puede ser que la foto no ayude, cuéntanos como lo conectaste.
Pareciera que está en el octavo pin contando desde el USB, que sería el GPIO14 marcado como D5, por eso dije que puede que sea por la foto.
Porque -1 (entero) es 0xFFFF en hexa, los números de pin ocupan un byte, o sea que descartando el byte superior queda 0xFF que es 255 en decimal, podría ser cualquier pin cuyo número tenga todos los bites a 1, el ESP8266 tiene 33 pines así que no puede ser mayor a 33, el más cercano es 31 (0x1F) , pero tiene 17 GPIOs (del 0 al 16) y el numero más cercano con todos los bites en 1 es el 15 (0xF).
Pero como dije, es una mera suposición, no se realmente que valor está tomando el compilador, lo cierto es que el pin -1 no existe y me sorprende que no "salte" el error.