Strumenti Utente

Strumenti Sito


simon

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
Prossima revisioneEntrambe le parti successive la revisione
simon [2020/02/14 16:27] – [Software] adminsimon [2020/02/14 16:55] – [Software] admin
Linea 386: Linea 386:
 // variabili volatile modificate dalla ISR del watchdog // variabili volatile modificate dalla ISR del watchdog
 volatile uint8_t nrot = 8; // quante volte si mischia il seed nella ISR volatile uint8_t nrot = 8; // quante volte si mischia il seed nella ISR
-         // usando il valore del timer+                           // usando il valore del timer
 volatile uint16_t time; // conteggio incrementato dall'ISR ogni 16ms volatile uint16_t time; // conteggio incrementato dall'ISR ogni 16ms
-      // usato per il debouncing dei pulsanti e per +                        // usato per il debouncing dei pulsanti e per 
-      // l'auto power-off dopo 64s (time = 4000)+                        // l'auto power-off dopo 64s (time = 4000)
    
 // FUNZIONI  // FUNZIONI 
Linea 619: Linea 619:
       // finché non si preme un bottone       // finché non si preme un bottone
       while (!pressed) {       while (!pressed) {
-  // provo i quattro bottoni+        // provo i quattro bottoni
         for (uint8_t i = 0; i < 4; i++) {         for (uint8_t i = 0; i < 4; i++) {
-    // controlla se il pulsante i è premuto +          // controlla se il pulsante i è premuto 
-    // buttons & maschera -> bit a 1 solo per il pin/pulsante i +          // buttons & maschera -> bit a 1 solo per il pin/pulsante i 
-    // PINB ha tutti i bit a 1 (resistenze di pull-up attivate +          // PINB ha tutti i bit a 1 (resistenze di pull-up attivate 
-    // nella funzione play) tranne quello del pulsante premuto +          // nella funzione play) tranne quello del pulsante premuto 
-    // l'espressione logica tra le parentesi interne vale 0 se +          // l'espressione logica tra le parentesi interne vale 0 se 
-    // il pulsante i è premuto, poi viene complementata+          // il pulsante i è premuto, poi viene complementata
           if (!(PINB & buttons[i] & 0b00011101)) {           if (!(PINB & buttons[i] & 0b00011101)) {
             // DEBOUNCE             // DEBOUNCE
             // se sono passati 16ms (tempo max per eventuali rimbalzi o             // se sono passati 16ms (tempo max per eventuali rimbalzi o
-      // se è stato premuto un pulsante diverso (non è rimbalzo)+            // se è stato premuto un pulsante diverso (non è rimbalzo)
             if (time > 1 || i != lastKey) {             if (time > 1 || i != lastKey) {
               // accendi il LED i e registra la pressione del tasto               // accendi il LED i e registra la pressione del tasto
-        play(i);+              play(i);
               pressed = true;               pressed = true;
-        // genera di nuovo l'indice LED della sequenza riprodotta+              // genera di nuovo l'indice LED della sequenza riprodotta
               uint8_t correct = simple_random4();               uint8_t correct = simple_random4();
               // se si è premuto il pulsante sbagliato               // se si è premuto il pulsante sbagliato
-        if (i != correct) { +              if (i != correct) { 
-    // accendi il LED giusto tante volte pari al livello raggiunto+                // accendi il LED giusto tante volte pari al livello raggiunto
                 for (uint8_t j = 0; j < lvl; j++) {                 for (uint8_t j = 0; j < lvl; j++) {
                   _delay_loop_2(65536); // 33ms                   _delay_loop_2(65536); // 33ms
Linea 645: Linea 645:
                 }                 }
                 _delay_loop_2(65536); // 218ms                 _delay_loop_2(65536); // 218ms
-    // animazione game over+                // animazione game over
                 gameOver();                 gameOver();
               }               }
-        // è stato premuto il pulsante giusto +              // è stato premuto il pulsante giusto 
               time = 0; // azzera time               time = 0; // azzera time
               lastKey = i; // memorizzo l'indice dell'ultimo LED               lastKey = i; // memorizzo l'indice dell'ultimo LED
               break; // esce dal ciclo for e smette di controllare se è                break; // esce dal ciclo for e smette di controllare se è 
-               // premuto un pulsante; passa al LED successivo  +                     // premuto un pulsante; passa al LED successivo  
-         // della sequenza+                     // della sequenza
             }             }
             time = 0; // azzera il conteggio per poweroff e debouncing             time = 0; // azzera il conteggio per poweroff e debouncing
           }           }
         }         }
-  // se passano 64s (time = 4000) e non succede niente poweroff+        // se passano 64s (time = 4000) e non succede niente poweroff
         if (time > 4000) {         if (time > 4000) {
           sleepNow();           sleepNow();
simon.txt · Ultima modifica: 2023/10/27 18:02 da admin