Extract utilities functions and add a test loop
This commit is contained in:
parent
de305307d5
commit
ac6fcae9b5
4 changed files with 106 additions and 29 deletions
|
@ -1,29 +1,8 @@
|
|||
#include <Arduino.h>
|
||||
#include <LiquidCrystal.h>
|
||||
#include "main.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define LCD_COLS 16
|
||||
#define LCD_ROWS 2
|
||||
|
||||
#define BUTTON_GREEN 2
|
||||
#define BUTTON_YELLOW 10
|
||||
#define BUTTON_BLUE 12
|
||||
#define BUTTON_RED 3
|
||||
|
||||
#define LED_GREEN A5
|
||||
#define LED_YELLOW A4
|
||||
#define LED_BLUE A3
|
||||
#define LED_RED A2
|
||||
|
||||
#define TONE_BLUE 329
|
||||
#define TONE_RED 440
|
||||
#define TONE_GREEN 165
|
||||
#define TONE_YELLOW 277
|
||||
|
||||
#define BUZZER 11
|
||||
|
||||
const uint8_t LEDS[] = {LED_GREEN, LED_YELLOW, LED_BLUE, LED_RED};
|
||||
const uint8_t BUTTONS[] = {BUTTON_GREEN, BUTTON_YELLOW, BUTTON_BLUE, BUTTON_RED};
|
||||
const uint16_t TONES[] = {TONE_GREEN, TONE_YELLOW, TONE_BLUE, TONE_RED};
|
||||
|
||||
LiquidCrystal lcd(9, 8, 4, 5, 6, 7);
|
||||
void setup() {
|
||||
|
@ -31,17 +10,31 @@ void setup() {
|
|||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
lcd.begin(LCD_COLS, LCD_ROWS);
|
||||
pinMode(BUZZER, OUTPUT);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
const uint8_t led = LEDS[i];
|
||||
for (byte i = 0; i < 4; i++) {
|
||||
const byte led = LEDS[i];
|
||||
pinMode(led, OUTPUT);
|
||||
pinMode(BUTTONS[i], INPUT_PULLUP);
|
||||
digitalWrite(led, HIGH);
|
||||
tone(BUZZER, TONES[i]);
|
||||
activate(i);
|
||||
delay(300);
|
||||
}
|
||||
noTone(BUZZER);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
deactivateAll();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (buttonIsPressed(GREEN)) {
|
||||
activate(GREEN);
|
||||
}
|
||||
else if (buttonIsPressed(YELLOW)) {
|
||||
activate(YELLOW);
|
||||
}
|
||||
else if (buttonIsPressed(BLUE)) {
|
||||
activate(BLUE);
|
||||
}
|
||||
else if (buttonIsPressed(RED)) {
|
||||
activate(RED);
|
||||
}
|
||||
else {
|
||||
deactivateAll();
|
||||
}
|
||||
}
|
38
super_simon/src/main.h
Normal file
38
super_simon/src/main.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
//
|
||||
// Created by Gabriel Augendre on 29/04/2021.
|
||||
//
|
||||
|
||||
#ifndef SUPER_SIMON_MAIN_H
|
||||
#define SUPER_SIMON_MAIN_H
|
||||
|
||||
#define LCD_COLS 16
|
||||
#define LCD_ROWS 2
|
||||
|
||||
#define BUZZER 11
|
||||
|
||||
#define BUTTON_GREEN 2
|
||||
#define BUTTON_YELLOW 10
|
||||
#define BUTTON_BLUE 12
|
||||
#define BUTTON_RED 3
|
||||
|
||||
#define LED_GREEN A5
|
||||
#define LED_YELLOW A4
|
||||
#define LED_BLUE A3
|
||||
#define LED_RED A2
|
||||
|
||||
#define TONE_GREEN 165
|
||||
#define TONE_YELLOW 277
|
||||
#define TONE_BLUE 329
|
||||
#define TONE_RED 440
|
||||
|
||||
// Indices in the constants tables
|
||||
#define GREEN 0
|
||||
#define YELLOW 1
|
||||
#define BLUE 2
|
||||
#define RED 3
|
||||
|
||||
const uint8_t LEDS[] = {LED_GREEN, LED_YELLOW, LED_BLUE, LED_RED};
|
||||
const uint8_t BUTTONS[] = {BUTTON_GREEN, BUTTON_YELLOW, BUTTON_BLUE, BUTTON_RED};
|
||||
const uint16_t TONES[] = {TONE_GREEN, TONE_YELLOW, TONE_BLUE, TONE_RED};
|
||||
|
||||
#endif //SUPER_SIMON_MAIN_H
|
33
super_simon/src/utils.cpp
Normal file
33
super_simon/src/utils.cpp
Normal file
|
@ -0,0 +1,33 @@
|
|||
//
|
||||
// Created by Gabriel Augendre on 29/04/2021.
|
||||
//
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "main.h"
|
||||
#include "utils.h"
|
||||
|
||||
|
||||
void activate(byte index) {
|
||||
for (const byte led : LEDS) {
|
||||
if (led != index) {
|
||||
digitalWrite(led, LOW);
|
||||
}
|
||||
}
|
||||
digitalWrite(LEDS[index], HIGH);
|
||||
buzz(index);
|
||||
}
|
||||
|
||||
void buzz(byte index, unsigned long duration) {
|
||||
tone(BUZZER, TONES[index], duration);
|
||||
}
|
||||
|
||||
bool buttonIsPressed(byte index) {
|
||||
return digitalRead(BUTTONS[index]) == LOW;
|
||||
}
|
||||
|
||||
void deactivateAll() {
|
||||
noTone(BUZZER);
|
||||
for (const byte led : LEDS) {
|
||||
digitalWrite(led, LOW);
|
||||
}
|
||||
}
|
13
super_simon/src/utils.h
Normal file
13
super_simon/src/utils.h
Normal file
|
@ -0,0 +1,13 @@
|
|||
//
|
||||
// Created by Gabriel Augendre on 29/04/2021.
|
||||
//
|
||||
|
||||
#ifndef SUPER_SIMON_UTILS_H
|
||||
#define SUPER_SIMON_UTILS_H
|
||||
|
||||
void activate(byte index);
|
||||
void buzz(byte index, unsigned long duration = 0);
|
||||
bool buttonIsPressed(byte index);
|
||||
void deactivateAll();
|
||||
|
||||
#endif //SUPER_SIMON_UTILS_H
|
Loading…
Reference in a new issue