#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSerif12pt7b.h>// alternative font
#define SCREEN_WIDTH 128 // Largura do display
#define SCREEN_HEIGHT 64 // Altura do display
#define bt1 2
#define led 11
int preset1, preset2, i;
#define SCREEN_ADDRESS 0x3C // Endereço do display (tente trocar por 0x3D se não funcionar)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Imagem personalizada
const unsigned char bitmap_ci [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x25, 0xa4, 0x80, 0x01, 0x25, 0xb4, 0xc0,
0x03, 0x6d, 0xb6, 0xc0, 0x07, 0xff, 0xff, 0xe0, 0x0c, 0x00, 0x00, 0x30, 0x3d, 0x80, 0x01, 0xbc,
0x05, 0xc0, 0x03, 0xb0, 0x0d, 0x80, 0x01, 0xb0, 0x3c, 0x3f, 0xfc, 0x3c, 0x04, 0x20, 0x04, 0x20,
0x04, 0x20, 0x04, 0x20, 0x3c, 0x20, 0x04, 0x3c, 0x04, 0x20, 0x04, 0x20, 0x0c, 0x20, 0x04, 0x30,
0x3c, 0x20, 0x04, 0x3c, 0x04, 0x20, 0x04, 0x20, 0x0c, 0x20, 0x04, 0x30, 0x3c, 0x20, 0x04, 0x3c,
0x04, 0x20, 0x04, 0x20, 0x0c, 0x20, 0x04, 0x30, 0x3c, 0x3f, 0xfc, 0x3c, 0x05, 0xc0, 0x03, 0xa0,
0x1d, 0xc0, 0x03, 0xb8, 0x3d, 0x80, 0x01, 0xbc, 0x07, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xe0,
0x01, 0x25, 0xb4, 0xc0, 0x01, 0x25, 0xb4, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const unsigned char image_data_chuva [] PROGMEM = {
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x01, 0xf0, 0x00,
0x03, 0x18, 0x00,
0x06, 0x1e, 0x00,
0x3c, 0x03, 0x80,
0x60, 0x00, 0xc0,
0x40, 0x00, 0x40,
0x60, 0x00, 0x40,
0x30, 0x07, 0xc0,
0x1e, 0x04, 0x00,
0x03, 0x8c, 0x00,
0x20, 0xf8, 0x00,
0x24, 0x01, 0x00,
0x24, 0x61, 0x00,
0x00, 0x25, 0x00,
0x01, 0x24, 0x00,
0x11, 0x04, 0x00,
0x11, 0x00, 0x00
};
void setup()
{
Serial.begin (9600);
pinMode(bt1, INPUT_PULLUP);
pinMode(led, OUTPUT);
// Inicializa o display
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("Erro na inicialização!"));
while(1);
}
display.clearDisplay();
// Retângulo ao redor da tela
display.drawRect(0, 0, display.width()-1, display.height()-1, 1);
// Circulo na parte direita da tela
display.fillCircle(display.width() - 12, 16, 7, 1);
// Configura fonte do texto
display.setTextSize(1); // Tamanho
display.setTextColor(1); // Cor
display.setCursor(4, 8); // Cursor pode ir de 0,0 a 128,32
display.print("HELLO");
display.setCursor(4, 16);
display.print("WORD!");
// Atualiza todas as mudanças
display.display();
// Espera 4 segundos e exibe a imagem
delay(4000);
display.clearDisplay();
display.drawBitmap(64-16, 0, bitmap_ci, 32, 32, 1);
display.display();
delay(4000);
display.clearDisplay();
display.display();
attachInterrupt(0,m,FALLING); //Configurando a interrupção
}
void m ()
{
i++;
delay(1000);
}
void loop()
{
Serial.println(i);
if((i)>=3)
{i=0;}
if ((i)==0)
{
preset1=analogRead(A0);
display.clearDisplay();
display.setTextSize(1); // Tamanho
display.setTextColor(1); // Cor
display.setCursor(4, 8); // Cursor pode ir de 0,0 a 128,32
display.print("Valor max");
display.setCursor(4, 16);
display.print(preset1);
display.display();
Serial.println(i);
}
if ((i)==1)
{
display.clearDisplay();
preset2=analogRead(A0);
display.setTextSize(1); // Tamanho
display.setTextColor(1); // Cor
display.setCursor(4, 8); // Cursor pode ir de 0,0 a 128,32
display.print("Valor min");
display.setCursor(4, 16);
display.print(preset2);
display.display();
Serial.println(i);
}
if ((i)==2)
{
display.clearDisplay();
display.setTextSize(1); // Tamanho
display.setTextColor(1); // Cor
display.setCursor(4, 8); // Cursor pode ir de 0,0 a 128,32
display.print(analogRead(A1));
display.setCursor(30, 16);
display.print(preset1);
display.setCursor(30, 22);
display.print(preset2);
display.display();
Serial.println(i);
}
if (analogRead(A1)<(preset1) && analogRead(A1)>(preset2) && (i)==2)
{
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
Serial.println(i);
}
}