Arduino Macro Pad: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Commenti al blocco loop del codice di arduino
Inserimento del blocco di codice esterno al loop dove vengono definite le diverse funzioni per le macro, l'encoder e le istruzioni da eseguire prima di mostrare informazioni sul display
Riga 664:
}
 
}
</syntaxhighlight>All'esterno del blocco del <code>loop</code> vanno defiite alcune funzioni particolari<syntaxhighlight lang="c++" line="1" start="605">
//----------------------------------------------------------------------|Profile Macro Functions|------------------------------------------------------------------------
/*
in questo blocco di commento viene descritta la sintassi e il funzionamento delle diverse istruzione della libreria che invia comandi di tastiera al dispositivo collegato
 
Keyboard.write(); Invia una pressione di un tasto ed è simile a premere e rilasciare un tasto fisico sulla tasteira
Sono anche accettati caratteri in codice ASCII ad esempio se si volesse premere il tasto del menu di Windows
 
 
Keyboard.press(); Ideale per le combinazioni dove bisogna tenere premuti piu tasti contemporaneamente
infatti dopo questa istruzione bisogna inserire Keyboard.release(); oppure Keyboard.releaseAll(); per rilasciare il tasto o tutti i tasti
precedentemente premuti
 
 
Keyboard.print(); Invia un inserimento di piu tasti in successione, come ad esempio una frase spesso utilizzata
 
 
Keyboard.println(); E' Simile al precedente con la differenza che dopo la successione di tasti viene inviato la pressione del tasto 'Invio?'
*/
void Macro1(int profile) { //Funzione per la macro 1, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('c');
Keyboard.releaseAll();
 
break;
 
case 2:
 
break;
}
}
 
void Macro2(int profile) { //Funzione per la macro 2, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('v');
Keyboard.releaseAll();
 
break;
 
case 2:
 
break;
}
}
 
void Macro3(int profile) { //Funzione per la macro 3, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('x');
Keyboard.releaseAll();
 
break;
 
case 2:
 
break;
}
}
 
void Macro4(int profile) { //Funzione per la macro 4, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('z');
Keyboard.releaseAll();
 
break;
 
case 2:
 
break;
}
}
void Macro5(int profile) { //Funzione per la macro 5, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('a');
Keyboard.releaseAll();
 
break;
 
case 2:
 
break;
}
}
void Macro6(int profile) { //Funzione per la macro 6, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
void Macro7(int profile) { //Funzione per la macro 7, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
void Macro8(int profile) { //Funzione per la macro 8, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
void Macro9(int profile) { //Funzione per la macro 9, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
void Macro10(int profile) { //Funzione per la macro 10, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press('m'); delay(100);
Keyboard.releaseAll();
Keyboard.press('t');
Keyboard.releaseAll();
break;
 
case 2:
Keyboard.println("Youtube.com");
 
break;
}
}
void Macro11(int profile) { //Funzione per la macro 11, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
void Macro12(int profile) { //Funzione per la macro 12, dove tra parentesi viene inserito il profile della macro da eseguire
switch (profile) {
case 1:
 
break;
 
case 2:
 
break;
}
}
 
//-----------------------------------------------------------------------------|Encoder Function|--------------------------------------------------------------------------------------
void encoder() { //Funzione che semplifica il codice quando necessario ricevere informazioni dall'encoder
// Read the current state of CLK
currentStateCLK = digitalRead(CLK);
 
//se l'ultimo e l'atuale valore della variabile CLK sono diversi allora è avvenuto una rotazione
if (currentStateCLK != lastStateCLK && currentStateCLK == 1) {
 
// se il valore di DT è diverso dall'attuale valore di CLk allora si sta ruotando in senso orario quindi si incrementa
if (digitalRead(DT) != currentStateCLK) {
counter ++;
 
//delay(800); //Buffer per rallentare il conteggio
} else {
//Altrimenti si sta ruotanto in senso antiorario
counter --;
//delay(800); //Buffer per rallentare il conteggio
}
Serial.print("Counter: ");
Serial.println(counter);
}
//Memorizzail precedente valore di CLK
lastStateCLK = currentStateCLK;
 
//Lettura dello stato del pulsante
int btnState = digitalRead(SW);
 
//Se viene rilevato il segnale LOW allora si è effettuata una pressione
if (btnState == LOW) {
//Se sono passati 50ms dall'ultimo valore LOW
//allora il pulsante è stato premuto, rilasciato e ripremuto una seconda volta
if (millis() - lastButtonPress > 50) {
Serial.println("Button pressed!");
delay(50);
buttonpress++;
if (buttonpress > 1) buttonpress = 0;
}
 
//Memorizza l'ultimo evento di pressione del tasto
lastButtonPress = millis();
}
delay(1);
}
 
 
//---------------------------------------------|Istruzioni che vengono effettuate ogni volta prima di mostrare informazioni sul display OLED|----------------------------------------
void displaySet() {
 
display.setTextColor(WHITE);
display.cp437(true);
}
</syntaxhighlight>