#include <SPI.h>
#include <Wire.h>
#include "cuore.h"
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
int buzzPremuto = false;
byte inputSwitches[5] = { 2, 3, 4, 5, 6 };
int socialsLeds[4] = { 7, 8, 9, 10 };
byte socialsLedsConBuzz[5] = { 7, 8, 9, 10, 11 };
int frame = 0;
const int frameCount = sizeof(frames) / sizeof(frames[0]);
unsigned long precedenteFrame = 0;
unsigned long precedenteBlink = 0;
int counterBlink = 0;
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
for (int i = 0; i < 5; i++) {
pinMode(inputSwitches[i], INPUT);
}
for (int i = 0; i < 5; i++) {
pinMode(socialsLedsConBuzz[i], OUTPUT);
}
}
void onOff(int highLow) {
for (int led : socialsLedsConBuzz) {
digitalWrite(led, highLow);
}
}
void loop() {
// if (millis() - precedenteFrame >= 100 && !buzzPremuto) { // frame test
// precedenteFrame = millis();
// display.clearDisplay();
// display.drawBitmap(0, 0, frames[frame], 128, 64, 1);
// display.display();
// frame = (frame + 1) % frameCount;
// }
if (!buzzPremuto) { // buzzfade
analogWrite(11, 127.5 + 127.5 * sin(2 * PI * millis() / 1000));
for (int i = 0; i < 4; i++) { // check switch leds
digitalWrite(socialsLeds[i], digitalRead(inputSwitches[i]) == HIGH);
}
}
if (digitalRead(7) && digitalRead(8) && digitalRead(9) && digitalRead(10) && digitalRead(6) && !buzzPremuto) {
for (int i = 0; i < frameCount; i++) { // 10 frame cuore
// if (millis() - precedenteFrame >= 100) {
// precedenteFrame = millis();
display.clearDisplay();
display.drawBitmap(0, 0, frames[i], 128, 64, 1);
display.display();
//}
}
// if (millis() - precedenteFrame >= 100 && !buzzPremuto) { // frame test
// precedenteFrame = millis();
// display.clearDisplay();
// display.drawBitmap(0, 0, frames[frame], 128, 64, 1);
// display.display();
// frame = (frame + 1) % frameCount;
// }
while (counterBlink < 30) { //lampeggio
if (millis() - precedenteBlink >= 100) {
precedenteBlink = millis();
onOff((counterBlink % 2 == 0) ? HIGH : LOW);
counterBlink++;
}
}
buzzPremuto = true;
onOff(LOW);
display.ssd1306_command(SSD1306_DISPLAYOFF);
}
}