Arduino e i suoi sensori laboratorio 23 Novembre 2019 Linolab

Ecco i progetti per questa lezione:

 La fotoresistenza un sensore per la luminosità!

arduino-crepuscolare-led-e-fotoresistenza-bb.png

int luminosita;  //Il valore letto dalla fotoresistenza
int ledPin = 10;  //Il pin del led

void setup() {
}

void loop() {
  luminosita = analogRead(A0);  //Lettura della luminosità
  luminosita = luminosita/4;  //Adeguiamo il valore della luminosità
  analogWrite(ledPin,luminosita);  //Mettiamo il valore letto per il led
  delay(10);  //Aspetta 10 ms
}

scarica il codice

Pilotiamo un LED col suono!

microphone-sound-sensor_bb.png

int ledPin=13;
int sensorPin=7;
boolean val =0;
boolean ledState = HIGH;

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);
  Serial.begin (9600);
} 
void loop (){
  val =digitalRead(sensorPin);
  Serial.println (val);
  // Quando il sensore percepisce un suono accende o spegne il LED
  if (val==HIGH) {
    ledState = !ledState;
  }
    digitalWrite(ledPin, ledState);
    delay(100);
}

scarica il codice

Pilotiamo dei LED con il telecomando a infrarossi!

Arduino-IR-Remote-Receiver-Controlling-LEDs.png

#include 

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int redPin = 10;
const int greenPin = 11;
int redState = HIGH;
int greenState = HIGH;


void setup(){
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}
//Leggiamo i segnali del telecomando per accedere e spegnere i LED
void loop(){
    if (irrecv.decode(&results)){

        switch(results.value){
          case 0xFF38C7: //Keypad button "5"
          redState = !redState;
          break;
          case 0xFF18E7: //Keypad button "2"
          greenState = !greenState;
          break;
          }
        digitalWrite(redPin, redState);
        digitalWrite(greenPin, greenState);
        irrecv.resume(); 
    }
}

scarica il codice

Un LED RGB con il telecomando!

Arduino-IR-Remote-Receiver-RGBLED.png

#include  
const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int bPin = 9;
const int rPin = 10;
const int gPin = 5;
int rState = 0;
int gState = 0;
int bState = 0;
int step = 85;


void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(rPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(bPin, OUTPUT);
}
//Con i tasti 1,2,3,4,5,6 del telecomando infrarossi mandiamo un segnale che viene interbretato da Arduino
// e modifica i liveeli di colore del LED RGB
void loop(){
    if (irrecv.decode(&results)){
        Serial.println(results.value, HEX);
        switch(results.value){
          
          case 0xFF38C7: //Keypad button "5"
          if (gState > 0){
            gState = gState - step;
          }
          break;
          
          case 0xFF18E7: //Keypad button "2"
          if (gState < 255){             gState = gState + step;           }           break;                      case 0xFF10EF: //Keypad button "4"           if (rState > 0){
            rState = rState - step;
          }
          break;
          
          case 0xFF30CF: //Keypad button "1"
          if (rState < 255){             rState = rState + step;           }           break;                      case 0xFF5AA5: //Keypad button "6"           if (bState > 0){
            bState = bState - step;
          }
          break;
          
          case 0xFF7A85: //Keypad button "3"
          if (bState < 255){
            bState = bState + step;
          }
          break;
          }
          
        analogWrite(rPin, rState);
        analogWrite(gPin, gState);
        analogWrite(bPin, bState);
        irrecv.resume(); 
    }
}

scarica il codice

Misuriamo le distanze con il sensore ad ultrasuoni!

Ultrasonic Sensor_bb.png

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 6;
int notes[] = {196, 220, 247, 294, 330, 392, 440, 494, 588, 660}; 

// defines variables
long duration;
int distance;

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT); // Sets the buzzer pin as output
Serial.begin(9600); // Starts the serial communication
}

void loop() {
// reset di pulizia
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// abilitiamo il trig per 10 millisecondi
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Leggiamo il tempo dell'eco che ci dice quanto tempo è passato tra invio e ricezione
duration = pulseIn(echoPin, HIGH);

// Calcoliamo la distanza
distance= duration*0.034/2;

// Stampo la distanza su monitor
Serial.print("Distance: ");
Serial.println(distance);

if (distance <= 120 && distance >= 5){
  tone(buzzer, (120-distance)*10);
} else {
  noTone(buzzer);
}
}

scarica il codice

Da zero a Led! laboratorio 5 ottobre 2019 Linolab

Ecco i progetti per questa lezione:

Accendiamo un LED con un pulsante!

Arduino Led con pulsante.png

//imposto le variabili

int ledPin = 13;
int buttonPin = 7;
int buttonState = LOW;
int ledState = LOW;

void setup() {
// inizializzo il Pin del LED
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

// la funzione loop continua ad andare all'infinito
void loop() {
buttonState = digitalRead(buttonPin); //leggo lo stato del bottone
ledState = buttonState; //imposto lo stato del led
digitalWrite(ledPin, ledState); //accendo/spengo il led in base allo stato del bottone
}

scarica il codice

Facciamo lampeggiare un LED

Arduino Lampeggiante.jpg

//imposto le variabili

int ledPin = 10;
int blinkTime = 1000;

void setup() {
// inizializzo il Pin del LED
pinMode(ledPin, OUTPUT);
}

// la funzione loop continua ad andare all'infinito
void loop() {
digitalWrite(ledPin, HIGH); //accendo il led
delay(blinkTime); //aspetto 1 secondo
digitalWrite(ledPin, LOW); //spengo il led
delay(blinkTime); //aspetto 1 secondo

}

scarica il codice

La sirena della polizia!

Arduino Sirena.jpg

//imposto le variabili

int ledPin1 = 13;
int ledPin2 = 12;
int blinkTime = 1000;

void setup() {
// inizializzo il Pin del LED
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}

// la funzione loop continua ad andare all'infinito
void loop() {
digitalWrite(ledPin1, HIGH); //accendo il led 1
digitalWrite(ledPin2, LOW); //spengo il led 2
delay(blinkTime); //aspetto 1 secondo
digitalWrite(ledPin1, LOW); //spengo il led
digitalWrite(ledPin2, HIGH); //accendo il led 2
delay(blinkTime); //aspetto 1 secondo

}

scarica il codice

Regoliamo la luminosità!

Arduino Potenziometro.png

// Imposto le variabili per i pin su Arduino
const int analogInPin = A0; // Pin di input analogico per il potenziometro
const int analogOutPin = 9; // pin analogico di output per il led

//imposto le variabili per il programma

int sensorValue = 0; // variabile per il valore dato dal sensore
int outputValue = 0; // valore da dare in output per il led

void setup() {
//setup dei pin
pinMode(analogInPin, INPUT);
pinMode(analogOutPin, OUTPUT);
}

void loop() {
sensorValue = analogRead(analogInPin); //Leggo il valore in input
outputValue = map(sensorValue, 0, 1023, 0, 255); //conversione dei valori per l'output
analogWrite(analogOutPin, outputValue); //modifico il valore in output al led
delay(2); //piccola pausa
}

scarica il codice

Costruiamo un semaforo!

Arduino Semaforo.png

//imposto le variabili per i pin dei Led

int rLedPin1 = 2;
int yLedPin1 = 3;
int gLedPin1 = 4;
int rLedPin2 = 5;
int yLedPin2 = 6;
int gLedPin2 = 7;

//variabili per i tempi dei led

int greenTime = 4000;
int yellowTime = 2000;
int redTime = 1000;

void setup() {
// imposto i pin come Output

pinMode(rLedPin1, OUTPUT);
pinMode(yLedPin1, OUTPUT);
pinMode(gLedPin1, OUTPUT);
pinMode(rLedPin2, OUTPUT);
pinMode(yLedPin2, OUTPUT);
pinMode(gLedPin2, OUTPUT);

}

void loop() {
//verde sull'1 e rosso sul 2
digitalWrite(rLedPin1, LOW);
digitalWrite(yLedPin1, LOW);
digitalWrite(gLedPin1, HIGH);
digitalWrite(rLedPin2, HIGH);
digitalWrite(yLedPin2, LOW);
digitalWrite(gLedPin2, LOW);

delay(greenTime);

//giallo sull'1 e rosso sul 2
digitalWrite(rLedPin1, LOW);
digitalWrite(yLedPin1, HIGH);
digitalWrite(gLedPin1, LOW);
digitalWrite(rLedPin2, HIGH);
digitalWrite(yLedPin2, LOW);
digitalWrite(gLedPin2, LOW);

delay(yellowTime);

//tutto rosso
digitalWrite(rLedPin1, HIGH);
digitalWrite(yLedPin1, LOW);
digitalWrite(gLedPin1, LOW);
digitalWrite(rLedPin2, HIGH);
digitalWrite(yLedPin2, LOW);
digitalWrite(gLedPin2, LOW);

delay(redTime);

//rosso sull'1 e verde sul 2
digitalWrite(rLedPin1, HIGH);
digitalWrite(yLedPin1, LOW);
digitalWrite(gLedPin1, LOW);
digitalWrite(rLedPin2, LOW);
digitalWrite(yLedPin2, LOW);
digitalWrite(gLedPin2, HIGH);

delay(greenTime);

//rosso sull'1 e giallo sul 2
digitalWrite(rLedPin1, HIGH);
digitalWrite(yLedPin1, LOW);
digitalWrite(gLedPin1, LOW);
digitalWrite(rLedPin2, LOW);
digitalWrite(yLedPin2, HIGH);
digitalWrite(gLedPin2, LOW);

delay(yellowTime);

//tutto rosso
digitalWrite(rLedPin1, HIGH);
digitalWrite(yLedPin1, LOW);
digitalWrite(gLedPin1, LOW);
digitalWrite(rLedPin2, HIGH);
digitalWrite(yLedPin2, LOW);
digitalWrite(gLedPin2, LOW);

delay(redTime);

scarica il codice

Semaforo con passaggio pedonale!

//imposto le variabili per i pin dei Led

int rLedPin1 = 2;

int yLedPin1 = 3;

int gLedPin1 = 4;

int rLedPin2 = 5;

int yLedPin2 = 6;

int gLedPin2 = 7;

int bluePin = 8;

int buttonPin = 9;

int bState = LOW;

//variabili per i tempi dei led

int greenTime = 4000;

int yellowTime = 2000;

int redTime = 1000;

void setup() {

// imposto i pin come Output

pinMode(rLedPin1, OUTPUT);

pinMode(yLedPin1, OUTPUT);

pinMode(gLedPin1, OUTPUT);

pinMode(rLedPin2, OUTPUT);

pinMode(yLedPin2, OUTPUT);

pinMode(gLedPin2, OUTPUT);

pinMode(bluePin, OUTPUT);

pinMode(buttonPin, INPUT);

}

void pedonale() {

bState = digitalRead(buttonPin);

if (bState == HIGH){

digitalWrite(bluePin, HIGH);

delay(greenTime*2);

digitalWrite(bluePin, LOW);

}

}

void loop() {

//verde sull'1 e rosso sul 2

digitalWrite(rLedPin1, LOW);

digitalWrite(yLedPin1, LOW);

digitalWrite(gLedPin1, HIGH);

digitalWrite(rLedPin2, HIGH);

digitalWrite(yLedPin2, LOW);

digitalWrite(gLedPin2, LOW);

pedonale();

delay(greenTime);

//giallo sull'1 e rosso sul 2

digitalWrite(rLedPin1, LOW);

digitalWrite(yLedPin1, HIGH);

digitalWrite(gLedPin1, LOW);

digitalWrite(rLedPin2, HIGH);

digitalWrite(yLedPin2, LOW);

digitalWrite(gLedPin2, LOW);

pedonale();

delay(yellowTime);

//tutto rosso

digitalWrite(rLedPin1, HIGH);

digitalWrite(yLedPin1, LOW);

digitalWrite(gLedPin1, LOW);

digitalWrite(rLedPin2, HIGH);

digitalWrite(yLedPin2, LOW);

digitalWrite(gLedPin2, LOW);

pedonale();

delay(redTime);

//rosso sull'1 e verde sul 2

digitalWrite(rLedPin1, HIGH);

digitalWrite(yLedPin1, LOW);

digitalWrite(gLedPin1, LOW);

digitalWrite(rLedPin2, LOW);

digitalWrite(yLedPin2, LOW);

digitalWrite(gLedPin2, HIGH);

pedonale();

delay(greenTime);

//rosso sull'1 e giallo sul 2

digitalWrite(rLedPin1, HIGH);

digitalWrite(yLedPin1, LOW);

digitalWrite(gLedPin1, LOW);

digitalWrite(rLedPin2, LOW);

digitalWrite(yLedPin2, HIGH);

digitalWrite(gLedPin2, LOW);

pedonale();

delay(yellowTime);

//tutto rosso

digitalWrite(rLedPin1, HIGH);

digitalWrite(yLedPin1, LOW);

digitalWrite(gLedPin1, LOW);

digitalWrite(rLedPin2, HIGH);

digitalWrite(yLedPin2, LOW);

digitalWrite(gLedPin2, LOW);

pedonale();

delay(redTime);

}

 

Scarica il codice

Programmi e Utility gratuite per PC

In questo articolo vi presento alcuni programmi gratuiti molto utili che vi consiglio per utilizare al meglio il vostro pc.

7-zip    7ziplogo

7-zip è un programma di compressione di file che lavora col formato archivio 7z, e può leggere e scrivere in molti altri tipi di file archivio. È un ottimo programma per comprimere ed estrarre file, dalle straordinarie capacità di compressione. Piccolo e compatto, ma anche veloce ed efficace, nonché dotato di utility interessanti. Supporta i seguenti formati tanto per compressione come per decompressione: 7z, ZIP, GZIP, BZIP2 e TAR. Supporta i seguenti formati per decompressione: RAR, CAB, ISO, ARJ, LZH, CHM, Z, CPIO, RPM, DEB E NSIS.


CCleaner    cc_128

CCleaner è un software freeware che permette l’ottimizzazione delle prestazioni, la protezione della privacy e la pulizia dei registri di sistema e altre tracce d’uso per varie versioni del sistema operativo Microsoft Windows. È sviluppato da Piriform Ltd., ed è un software molto noto e diffuso, che ha ottenuto anche vari riconoscimenti.
È possibile utilizarlo anche per disinstallare i programmi installati e gestire i programmi che vengono eseguiti all’avvio.


dopdf    doPdf

doPDF è un programma che permette in modo semplice di trasformare qualsiasi documento in PDF attraverso il comando stampa attraverso una stampante virtuale.


filezilla    filezillas

FileZilla è un software gratuito che ti consente di caricare o scaricare files su un server, per esempio: gli elementi del tuo sito su o dal tuo hosting. È dotato di un interfaccia grafica utente intuitiva. Veloce e affidabile, Filezilla è gratuito e multipiattaforma.


freeocr

FreeOCR è un programma per il riconoscimento dei caratteri da file pdf, file immagine e scansioni si collega direttamente allo scanner e produce un testo quasi privo di errori.
Un punto a svantaggio e la perdita di formattazione del testo.


Lupas Rename 2000    lupas-rename-2000_19159

Lupas Rename è un piccolo freeware che funziona su tutti i Windows recenti, disponibile in molte lingue compreso l’italiano, che non necessita di installazione e che svolge egregiamente il suo arduo compito in maniera semplice e potente.Con Lupas è possibile rinominare file e cartelle utilizzando tantissime opzioni: sequenze numeriche e alfabetiche, aggiungere caratteri o numeri ai nomi dei file e cartelle esistenti.


Notepad++    Notepad++_Logo

Notepad++ è un editor di codice gratuito che supporta la maggior parte dei linguaggi. Completo ed intuitivo inserisce sistemi di riduzione del codice, inserimento di Macro, autocompletamento, colorazione selettiva del codice e sistemi di revisione.


pure text    puretext

Pure text è una utility che non necessita di installazione e serve ad eliminare la formattazione dei testi copiati ottenendo il puro testo.


RIOT    riot-banner-logo

RIOT è un programma che ci consente di ridurre lo spazio occupato da un’immagine, per esempio se la dobbiamo postare sul Web; per far ciò non utilizza formati strani (anzi, è in grado di caricare immagini di tantissimi formati), o particolari algoritmi di compressione, bensì cerca di farci utilizzare al meglio strumenti che abbiamo già.


Sketchup    SketchUp-Logo

SketchUp è un CAD che permette la modellazione solida in modo semplice e intuitivo utile per realizare progetti di qualsiasi natura. È presente una vasta libreria online di modelli creati dagli utenti che è possibile utilizzare nei propri progetti semplicemente scaricndoli.


teamviewer    teamviewer-icon200x200

TeamViewer è un programma che permette la condivisione del desktop tra duePc e il trasferimento file ed il controllo remoto ad alto livello senza particolari configurazioni attraverso un id e password. Le ultime versioni sono compatibili con PC MAC smartphone e tablet.


VLC    largeVLC

VLC è un riproduttore multimediale multi-piattaforma gratuito che riproduce moltissimi file multimediali così come DVD, CD audio, VCD e diversi protocolli di trasmissione.
Inoltre è molto utile per convertire i formati audio e video ed è in grado di riparare molti file corrotti.