Crea sito

Categoria: Elettronica

3 Replies

Aggiungere librerie all’IDE di Arduino

In questo articolo vedremo una cosa semplice, ma non scontata per tutti, ovvero aggiungere librerie all’IDE di Arduino. (altro…)


Leave a reply

Arduino for Noobs – Tutorial #2

Eccoci con il secondo videotutorial sulla programmazione Arduino per nabbi!

In questo secondo tutorial vedremo l’utilizzo di alcune funzione della comunicazione seriale in Arduino.

 


Leave a reply

Arduino for Noobs – Tutorial #1

Questo è il primo di una serie di video-tutorial sulla programmazione Arduino per nabbi!
In questo primo video vedremo l’esempio del led blinking, che consiste nel far lampeggiare un semplice led.


12 Replies

Libreria per Arduino 3G Gps shield

Read in ENGLISH.

Arduino 3G Gps shield

Arduino 3G Gps shield

In questa pagina potete trovare le descrizioni delle funzioni della libreria per Arduino 3G Gps shield. La libreria è ancora in versione beta, quindi siete pregati di segnalare qualsiasi malfunzionamento o suggerimento.


Leave a reply

Dimensionare resistenza led Arduino

LED

Quando abbiamo un progetto di Arduino nel quale c’è un led che viene acceso attraverso un pin, verrebbe da pensare che basti collegare il led al pin e a GND. Ma è corretto?

Per toglierci il dubbio possiamo provare a collegarlo, e vedremmo che il led si accende senza problemi.
Questo tipo di collegamento è sconsigliatissimo, se non per brevi tempi, perché il led ha una resistenza molto bassa, quindi circolerà una corrente elevata che può danneggiare sia il led che il pin, che può erogare al massimo 40mA.
Dobbiamo quindi inserire una resistenza in serie al led, e per dimensionarla usiamo il primo principio di Kirchhoff.

R=V/I

dove V non è solo la tensione del pin di Arduino, ovvero 5V, ma essa sottratta della caduta di tensione ai capi del led, che dipende dal colore del led.

  •  rosso: 1,8 V
  •  giallo: 1,9 V
  •  verde: 2,0 V
  •  arancio: 2,0 V
  •  blu: 3,0 V
  •  bianco: 3,0 V

I invece è la massima corrente che può sopportare il led senza bruciarsi e va dai 15-25 mA.

Prendendo l’esempio di un led rosso, la resistenza sarà:

R=(5-1.8)/0,02=160Ω


Leave a reply

Dado virtuale con Arduino

dado

In questo articolo vedremo come creare un dado virtuale con Arduino, usando dei led.

INGREDIENTI:

-1x Arduino UNO

-1x Bredboard

-1×6 led

-1x pulsante

-1x resistenza da 10kΩ

-7x resistenze da  almeno 150Ω

Il circuito da realizzare è semplice, l’importante è rispettare l’ordine dei led. La resistenza collegata al pulsante è quella da 10 kΩ, mentre quelle collegate ai led sono quelle da 150Ω.

dado_schem Ora passiamo allo sketch. Per prima cosa creiamo un array di 6 interi e li scriviamo in binario.

int numbers[6]= { 0b0010001000, 0b0101000100, 0b0111001100, 0b1001010101, 0b1011011101, 0b1101110111, };

In ogni numero intero i primi 7 bit partendo dal’LSB (quello più a destra) indicano la combinazione di led da accendere, mentre gli ultimi tre indicano il numero (da 1 a 6), scritto in binario, che corrisponde alla combinazione.

Prendiamo l’esempio del numero “4”:

bit

I bit verdi indicano il numero da rappresentare. 1 0 0 in binario, ovvero 4 in base 10. I bit rossi invece rappresentano la sequenza di led per visualizzare il numero. Successivamente dichiariamo i pin dei led come uscite e quello del pulsante come entrata

for(int i=0;i<13;i++)pinMode(i,OUTPUT);
pinMode(13,OUTPUT);

I numeri da visualizzare verranno generati dalla funzione pseudo-ramdom ramdom().
Questa funzione però genera sempre la stessa sequenza di numeri ogni volta che si resetta il microcontrollore.
Per evitare questo, nel setup richiamiamo la funzione randomSeed(analogRead(0)) passandole il valore della porta analogica A0.
Ora quando avvieremo il programma, la funzione random() prenderà come riferimento per iniziare a generare i numeri casuali, il valore della porta A0, che non essendo avrà dei valori casuali diversi tra loro. la funzione che fa visualizzare il numero sui led è writeDie() e le passiamo il numero generato dalla funzione random(1,7).

writeDie(random(1,7));

Questa funzione compara il numero generato dalla funzione random() con i ultimi tre bit di ogni numero int dell’array, finché non trova quello corrispondente. Per poter fare questa operazione, dobbiamo liberarci, per ora, dei primi 7 bit che indicano la sequenza di led; per farlo usiamo l’operatore bitshift right >> che farà slittare a destra i bit; in questo caso li faremo slittare di 7 posizioni ovviamente.

int i=0; 
for(;i<6;i++)if(num==numbers[i]>>7)break;

Il contatore i è stato dichiarato fuori dal ciclo for perché ci servirà poi per ricordarci qual’era la sequenza di bit che corrispondeva al numero casuale generato. Ora che abbiamo trovato la sequenza di bit dobbiamo accendere i led corrispondenti e per farlo, useremo un ciclo for che scrive ad ogni uscita il valore del bit corrispondente.

for(int k=0;k<9;k++)digitalWrite(k,bitRead(numbers[i],k));

Per finire dobbiamo generare il numero solo c’è un fronte di salita sul pin al quale è collegato il pulsante, quindi aggiungiamo due cicli while() che restano in ascolto dello stato del pin.
Lo sketch completo:

//Created by Mohamed Fadiga momodesine@hotmail.it
int numbers[6]=
{
    0b0010001000,
    0b0101000100,
    0b0111001100,
    0b1001010101,
    0b1011011101,
    0b1101110111,
};

void setup()
{
    for(int i=0;i<13;i++)pinMode(i,OUTPUT);
    pinMode(13,OUTPUT);
    randomSeed(analogRead(0));
}

void loop()
{
    while(digitalRead(13)==0);
    writeDie(random(1,7));
    while(digitalRead(13)==1);
}

void writeDie(byte num)
{
    int i=0;
    for(;i<6;i++)if(num==numbers[i]>>7)break;
    for(int k=0;k<9;k++)digitalWrite(k,bitRead(numbers[i],k));
}

2 Replies

Sensore a ultrasuoni HC-SR04 + Arduino

hc-sr04

In questo articolo vedremo come misurare distanze con il sensore a ultrasuoni HCSR04.

INGREDIENTI:
-1x Arduino UNO
-1x Bredboard
-1x Sensore a ultrasuoni HCSR04
-Cavetti vari

Gli ultrasuoni sono delle onde sonore non udibili all’orecchio umano. Per misurare le distanze si usa la capacità delle onde di riflettersi sugli oggetti;  Viene mandata un’onda e si misura il tempo che impiega per tornare indietro.
Sapendo poi la velocità del suono nell’aria, si può calcolare la distanza con la semplice equazione S=VxT V è la velocità del suono, che per comodità, si può assumere il suo valore a 20°, ovvero 331.4m/s; Se si hanno elevate variazione di temperatura, per avere risultati accurati, è opportuno calcolare la velocità con la formula V = 331.4 + 0.62*t.
Per avere un risultato apprezzabile, ci conviene convertire la velocità in cm/ms (centimetri al microsecondo) in modo da ottenere il risultato in centimetri. Il nuovo valore di V sarà quindi pari a  3.4*10^-2 cm/microsec. Per avere informazioni dal sensore, bisogna mettere il pin trigger a stato logico alto per almeno 10 microsecondi. Il sensore emetterà le onde e aspetterà il loro ritorno, poi manderà un un impulso di stato logico alto al pin echo, della stessa duranta del tempo impiegato dall’onda  per compiere il suo percorso.
Il tempo T restituitoci dal sensore, è quello impiegato dall’onda per andare e tornare in microsecondi, quindi dobbiamo dividerlo per due per avere il tempo trascorso prima di essere riflesso. lo schema da realizzare è il seguente:
HC-SR04
lo sketch da caricare su arduino:

//Creato da Mohamed Fadiga momodesine@hotmail.it
int trigger=7;
int echo=8;

void setup()
{
  pinMode(trigger,OUTPUT);
  pinMode(echo,INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trigger,LOW);
  digitalWrite(trigger,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger,LOW);
  long duration=pulseIn(echo,HIGH);
  long distance=0.017*duration;
  Serial.print("distanza:  ");
  //dopo 38ms è fuori dalla portata del sensore
  if(duration < 40000)Serial.println("fuori portata");
  else
  {
    Serial.print(distance);
    Serial.println("cm");
  }
  delay(1500);
}

29 Replies

Inserire parametri e password con Arduino + LCD + Keypad + Servo

In questo articolo vedremo come sfruttare un keypad 4×4 e un display LCD per permettere a l’utente di inserire parametri come dati o password.

Utilizzeremo questo metodo per attivare un servo dopo l’inserimento di una password dalla tastiera

INGREDIENTI:

-1x Arduino UNO

-1x Bredboard

-1x Display LCD

-1x Potenziometro da 10 kΩ (opzionale)

-1x Keypad 4×4

-1x Servo

-Cavetti vari

lo schema da realizzare:

servo_lcd_password

lo scketch per arduino:

//Creato da Mohamed Fadiga momodesine@hotmail.it

#include  //include la libreria per la gestione del display LCD
#include  //include la libreria per la gestione del keypad
#include  //include la libreria per la gestione del servo

LiquidCrystal lcd(10, 11, A0, A1, A2, A3); //Imposta i pin di Arduino a quali sono collegati in pin del display (Rs,E,DB4,DB5,DB6,DB7)

byte colPins[4] = {5, 4, 3, 2};
byte rowPins[4] = {9, 8, 7, 6};

char Keys[4][4] = //creo la matrice dei tasti della tastiera.
{
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

Keypad keyp = Keypad(makeKeymap(Keys), rowPins, colPins, 4, 4);
Servo myservo;
char key = '\0';
int lum_pin = 12;
long inst_time;
char risp[16];
byte close_val = 0;
byte open_val = 180;

void setup()
{
  pinMode(lum_pin, OUTPUT);
  analogWrite(lum_pin, 0);
  lcd.begin(16, 2);
  Serial.begin(9600);
  myservo.attach(A4);
  myservo.write(close_val);
}

void loop()
{
  lcd.clear();
  lcd.print("Premi '*'");
  key = keyp.getKey();
  while (key != '*')key = keyp.getKey();
  analogWrite(lum_pin, 255);
  int ans = get_param("Ins. Password", "0123456789", risp, true);
  if (ans == 1)
  {
    lcd.print("Apertura...");
    myservo.write(open_val);
    delay(5000);
    lcd.clear();
    lcd.print("Chiusura...");
    myservo.write(close_val);
  }
  else if (ans == 2)
  {
    lcd.print("Pass errata!");
    delay(2000);
  }
  analogWrite(lum_pin, 0);
}

boolean get_param(char* question, char* answer, char* param, boolean isPassword )
{
  byte j = 0;
  lcd.clear();
  lcd.print(question);
  lcd.setCursor(j, 1);
  lcd.blink();
  inst_time = millis();
  do
  {
    lcd.setCursor(j, 1);
    key = keyp.getKey();
jump_key:
    if (key)inst_time = millis();
    if ((key == '*') || (key == '#'))break;
    else if (key == 'C' && j > 0)
    {
      param[j] = '\0';
      j--;
      lcd.setCursor(j, 1);
      lcd.write(" ");
    }
    else if (key == 'B' || key == 'D' || key == 'A');
    else if (key)
    {
      param[j] = key;
      j++;
      lcd.print(key);
      if (isPassword)
      {
        long pass_wait = millis();
        do key = keyp.getKey();
        while (((millis() - pass_wait) < 1000) && (!key));
        lcd.setCursor(j - 1, 1);
        lcd.write('*');
        if (key)goto jump_key;
      }
    }
  }
  while ((millis() - inst_time) < 10000 && j < 17);
  param[j] = '\0';
  lcd.clear();
  if (key == '*')
  {
    Serial.println(param);
    if (!strcmp(param, answer))return 1;
    else return 2;
  }
  else return 0;
}

29 Replies

Sensore di temperatura e umidità DHT22 + Arduino + Display LCD

In questo precendente articolo abbiamo visto come utilizzare il sensore DHT22 con Arduino e mandare i valori di umidità e temperatura sul Serial monitor. Ora vedremo invece come crivere i dati ricevuti dal sensore su un display LCD. INGREDIENTI: – 1x Arduino UNO – 1x Sensore DHT22

-1x Resistenza da 10 kΩ

-1x Bredboard

-1x Display LCD

-1x Potenziometro da 10 kΩ

-Cavetti vari (altro…)


65 Replies

Sensore di temperatura e umidità DHT22 + Arduino

In questo articolo vedremo come rilevare misure di temperatura e umidità con il sensore DHT22 e Arduino.

INGREDIENTI:

– 1x Arduino UNO

– 1x Sensore DHT22

– 1x Resistenza da 10 kΩ

– 1x Bredboard

– Cavetti vari (altro…)