Visualizzazione post con etichetta ATtiny85. Mostra tutti i post
Visualizzazione post con etichetta ATtiny85. Mostra tutti i post

domenica 18 gennaio 2015

Linea dati.



Un appartamento. Un fotodiodo ricevente IR ed un telecomando in ciascuna stanza, gli Attiny posizionati presso i dispositivi elettrici da pilotare. Da ciascuna stanza il fotodiodo rileverebbe il treno di impulsi proveniente dal telecomando, identico in ogni stanza, inviandolo sulla linea dati. Ciascun ATTTINY è programmato per accettare un solo treno di impulsi ed attivare un relè. Esempio: da qualunque stanza premendo il tasto 4 si può abbassare la tapparella della cucina.
Potrebbe funzionare.
  /* Si sottopone a condizione if la lettura
       esadecimale dei tasti anteponendo al valore
       HEX il valore 0x. Nello sketch:
       Relè = OFF
       Tasto 1 premuto FF30CF = Relè ON
       Tasto 2 premuto FF18E7= Relè OFF      */
     
       #include <IRremote.h> 
       
       # define RELE 6
       
       int receiver = 7; 
      
       IRrecv irrecv(receiver); 
      
      decode_results results;
    
      void setup()
          { Serial.begin(9600); 
            irrecv.enableIRIn(); 
            pinMode(RELE, OUTPUT);
            digitalWrite(RELE,LOW); }
          
          
      void loop(){
      
         if ( irrecv.decode(&results)) 
            { Serial.println(results.value, HEX); 
              irrecv.resume();                  } 
         
         if ( results.value == 0xFF30CF)
            { digitalWrite(RELE, HIGH);    } 
            
         if ( results.value == 0xFF18E7)
            { digitalWrite(RELE, LOW);    } 
               
    }

venerdì 5 dicembre 2014

ATtiny85 - terza parte

PASSO 7
Caricare lo sketch rammmentadosi che non tutte le istruzioni di Arduino Uno vengono accettate, della piedinatura del chip e della non eccessiva memoria dell'ATtiny.
Non confondere il pin del chip con la porta.

Sketch di prova:blink

     /* Piedinatura di ATtiny85
         PB0 (0) = pin 5 tested
         PB1 (1) = pin 6 tested
         PB2 (2) = pin 7 tested
         PB3 (3) = pin 2 tested
         PB4 (4) = pin 3 tested (mio led)
         PB5 (5) = pin 1 non riuscito.Forse perchè è anche RESET?
         
      */

      # define LED 4
      void setup()
          
          { pinMode(LED, OUTPUT);}
       
      void loop() {
     
        digitalWrite(LED, HIGH);
        delay(300);
        digitalWrite(LED, LOW);
        delay(300);
      
      }


Sketch di prova: ATtiny85 lancia un S.O.S.



      #define  LED  4 // PB4 pin 3 di ATtiny
      #define  BUT  3 // PB3 pin 2 di ATtiny

      int buttonState = 0;

      void setup()
                 { pinMode(LED, OUTPUT); 
                   pinMode(BUT, INPUT);  }
      
      void loop(){

        buttonState = digitalRead(BUT);
        if ( buttonState == HIGH)
           { digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(200);             
             digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(200);  
             digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(500); 
         
             digitalWrite(LED, HIGH);
             delay(200);
             digitalWrite(LED, LOW);
             delay(200);             
             digitalWrite(LED, HIGH);
             delay(200);
             digitalWrite(LED, LOW);
             delay(200);      
             digitalWrite(LED, HIGH);
             delay(200);
             digitalWrite(LED, LOW);
             delay(500);

             digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(200);             
             digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(200);  
             digitalWrite(LED, HIGH);
             delay(400);
             digitalWrite(LED, LOW);
             delay(1200); } 
 
      }

ATtiny85 - seconda parte

PROCEDURA:
Passo 1:

Controllate il tipo di ARDUINO in uso.


Passo2:
Caricando lo sketch ISP ARDUINO UNO diventa un programmatore ISP.

Passo3:
Fare i dovuti collegamenti fra ARDUINO UNO ed il chip ATTiny, mettere un condensatore elettolitico da 47 yF fra il pin RESET di Arduino e GND.

Passo 4:
Specificare che Arduino è ora un programmatore ISP.

PASSO 5 e PASSO 6:
Selezionare il chip ATtiny e la relativa frequenza.
Scrivere il booloader.



ATtiny85 - prima parte


Criterio generale:
Si crea un'apposita cartella affinchè il software includa oltre alla famiglia Arduino anche quella degli ATtiny.
Arduino diventa poi un programmatore ISP.

Arduino diventa un programmatore tipo ISP:
• caricando lo sketch ARDUINO ISP
• selezionando la voce ARDUINO as ISP

Si collega ATtiny e:
• si specifica il tipo e la frequenza
• si carica il Bootloader
• si carica lo sketch

Tipo di Arduino : ARDUINO UNO
Software : 1.0.5-r2

Tipo di ATtiny : ATtiny85
f. selezionata : ATtiny85 1 MHz internal oscillator BOD disabled.

file di supporto : arduino-tiny-0100-0012.

sketch di prova1 : Blink
sketch di prova2 : messaggio di SOS

NOTE:
• Importante è il condensatore elettrolitico da 47 yF fra il pin RESET di Arduino e GND.
• Ricordarsi che ARDUINO funge da piattaforma ARDUINO oppure da programmatore ISP.
• Questo fatto è ingannevole nel proseguo delle esperienze.
• Ignorare tutti i messaggi di errore di Arduino.