Arduino Macro Pad: differenze tra le versioni

→‎Codice: Riordino
mNessun oggetto della modifica
Etichetta: Editor wikitesto 2017
(→‎Codice: Riordino)
 
== Codice ==
 
=== Programma principale ===
 
Come prima cosa includiamo le librerie necessarie per il funzionamento dello sketch<syntaxhighlight lang="c++" line="1">
#include <Keyboard.h> //Libreria utilizzata per 'simulare' la pressione di tasti su una tastiera fisica
#include <Adafruit_GFX.h> // le due librerie di Adafruit sono entrambe necessarie per il funzionamento del display OLED
#include <Adafruit_SSD1306.h>
</syntaxhighlight>dopo di che dobbiamo definire alcuni oggetti per le varie librerie. per ridurre la lunghezza del codice includeremo un altro file .ino che chiameremo "Define".<syntaxhighlight lang="c++" line="1" start="6">
#include <Define.h>
</syntaxhighlight>Nel file "Define.ino" scriveremo le seguenti definizioni:<syntaxhighlight lang="c++" line="1">
//Variabili e constanti per il display OLED
#define SCREEN_WIDTH 128 //larghezza del display OLED
#define SCREEN_HEIGHT 64 //altezza del display OLED
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
//Costanti per la libreria Keypad.h
const byte ROWS = 3;
const byte COLS = 4;
 
char keys[ROWS][COLS] = {
{'1', '2', '3', '4'},
{'5', '6', '7', '8'},
{'9', '0', 'A', 'B'},
};
 
byte rowPins[ROWS] = {7, 8, 9 };
byte colPins[COLS] = {10, 16, 14, 15};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
//Varibili per la selezione dei profili Macro
unsigned int ProfileSelect = 1;
unsigned int profiles = 2;
unsigned int buttonpress = 0;
 
//Variabili e constanti per il funzionamento dell'encoder
#define CLK 4 //Pin di collegamento di CLK
#define DT 5 //Pin di collegamento di DT
#define SW 6 //Pin di collegamento di SW
 
int counter = 1; //Variabile counter
int currentStateCLK; //Variabili per il monitoraggio di CLK
int lastStateCLK;
unsigned long lastButtonPress = 0; //Variabile per il monitoraggio della presisone del pulsante
 
int pressedKey = ' '; //Variabile per il carattere premuto sul keypad
</syntaxhighlight>Dopodiché proseguiamo con la scrittura del blocco <code>setup</code>:<syntaxhighlight lang="c++" line="1" start="7">
void setup() {
</syntaxhighlight>
 
=== Definizione delle variabili globali ===
Nel file <code>Define.ino</code> sono riportate tutte le variabili globali utilizzate dal display, dalla tastiera, dall'encoder, oltre ad alcune variabili di sistema richiamate nel programma principale.<syntaxhighlight lang="c++" line="1">
//Variabili e constanti per il display OLED
#define SCREEN_WIDTH 128 //larghezza del display OLED
#define SCREEN_HEIGHT 64 //altezza del display OLED
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
//Costanti per la libreria Keypad.h
const byte ROWS = 3;
const byte COLS = 4;
 
char keys[ROWS][COLS] = {
{'1', '2', '3', '4'},
{'5', '6', '7', '8'},
{'9', '0', 'A', 'B'},
};
 
byte rowPins[ROWS] = {7, 8, 9 };
byte colPins[COLS] = {10, 16, 14, 15};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
//Varibili per la selezione dei profili Macro
unsigned int ProfileSelect = 1;
unsigned int profiles = 2;
unsigned int buttonpress = 0;
 
//Variabili e constanti per il funzionamento dell'encoder
#define CLK 4 //Pin di collegamento di CLK
#define DT 5 //Pin di collegamento di DT
#define SW 6 //Pin di collegamento di SW
 
int counter = 1; //Variabile counter
int currentStateCLK; //Variabili per il monitoraggio di CLK
int lastStateCLK;
unsigned long lastButtonPress = 0; //Variabile per il monitoraggio della presisone del pulsante
 
int pressedKey = ' '; //Variabile per il carattere premuto sul keypad
</syntaxhighlight>
== Conclusioni==