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>
|