Video e software quinto volume “Elettronica? Facile!”

***********

Presto anche i video del risultato di alcuni degli esperimenti presenti nel libro.

Stay tuned!

***********

 

Gli sketch usati negli esperimenti del libro “Elettronica?Facile!” vol. 5 (elettronica programmabile).
Dopo aver preparato l’hardware, è sempre meglio seguire passo passo le istruzioni presenti nel libro, per capire fino in fondo come funziona un programma e come costruirlo. Comunque, qui sotto trovi anche gli sketch come si presentano nella finestra dell’IDE. Anche quelli che inizialmente sono stati costruito tramite la programmazione a blocchi ArduBlock.
Per usarli, se serve, è sufficiente copiarne il testo dentro l’IDE e compilarli trasferendoli poi sulla scheda.

 

//————————————————————————-
//Esperimento 1
//————————————————————————-

void setup()
{
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
pinMode( 12 , OUTPUT);
}

void loop()
{
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 12 , LOW );
delay( 1000 );
digitalWrite( 9 , HIGH );
delay( 1000 );
digitalWrite( 10 , HIGH );
delay( 1000 );
digitalWrite( 12 , HIGH );
delay( 2000 );
}

//————————————————————————-
//Esperimento 2
//————————————————————————-

void setup()
{
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
pinMode( 12 , OUTPUT);
}

void loop()
{
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 12 , LOW );
delay( analogRead(5) );
digitalWrite( 9 , HIGH );
delay( analogRead(5) );
digitalWrite( 10 , HIGH );
delay( analogRead(5) );
digitalWrite( 12 , HIGH );
delay( analogRead(5) );
}

//————————————————————————-
//Esperimento 3
//————————————————————————-

void setup()
{
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
pinMode( 12 , OUTPUT);
Serial.begin(9600);
}

void loop()
{
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
digitalWrite( 12 , LOW );
Serial.print(“Potenziometro=”);
Serial.print(analogRead(5));
Serial.println();
delay( analogRead(5) );
digitalWrite( 9 , HIGH );
delay( analogRead(5) );
digitalWrite( 10 , HIGH );
delay( analogRead(5) );
digitalWrite( 12 , HIGH );
delay( analogRead(5) );
tone(7, 440, 500);
}

//————————————————————————-
//Esperimento 4
//————————————————————————-

int _ABVAR_1_PWM = 0 ;
int _ABVAR_2_PINA = 0 ;
int _ABVAR_3_PINB = 0 ;
int _ABVAR_4_0 = 0 ;

void ANTIORARIO();
void DECELERA();
void ORARIO();
void ACCELERA();

void setup()
{
pinMode( 2 , INPUT);
pinMode( 3 , INPUT);
pinMode( 4 , INPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
pinMode( _ABVAR_2_PINA , OUTPUT);
Serial.begin(9600);
pinMode( _ABVAR_3_PINB , OUTPUT);
_ABVAR_1_PWM = 0 ;

_ABVAR_2_PINA = 9 ;

_ABVAR_3_PINB = 10 ;

analogWrite(9 , _ABVAR_4_0);

analogWrite(10 , _ABVAR_4_0);

}

void loop()
{
if (( ( digitalRead(4) ) == ( LOW ) ))
{
while ( ( ( ( digitalRead(2) ) == ( LOW ) ) && ( ( _ABVAR_1_PWM ) < ( 255 ) ) ) )
{
ANTIORARIO();
ACCELERA();
}

while ( ( ( ( digitalRead(3) ) == ( LOW ) ) && ( ( _ABVAR_1_PWM ) > ( 0 ) ) ) )
{
ANTIORARIO();
DECELERA();
}

}
else
{
while ( ( ( ( digitalRead(2) ) == ( LOW ) ) && ( ( _ABVAR_1_PWM ) < ( 255 ) ) ) )
{
ORARIO();
ACCELERA();
}

while ( ( ( ( digitalRead(3) ) == ( LOW ) ) && ( ( _ABVAR_1_PWM ) > ( 0 ) ) ) )
{
ORARIO();
DECELERA();
}

}
}

void ANTIORARIO()
{
_ABVAR_2_PINA = 9 ;
_ABVAR_3_PINB = 10 ;
}

void DECELERA()
{
analogWrite(_ABVAR_2_PINA , _ABVAR_4_0);
_ABVAR_1_PWM = ( _ABVAR_1_PWM – 5 ) ;
Serial.print(“PWMDO=”);
Serial.print(_ABVAR_1_PWM);
Serial.println();
analogWrite(_ABVAR_3_PINB , _ABVAR_1_PWM);
delay( 100 );
}

void ORARIO()
{
_ABVAR_2_PINA = 10 ;
_ABVAR_3_PINB = 9 ;
}

void ACCELERA()
{
analogWrite(_ABVAR_2_PINA , _ABVAR_4_0);
_ABVAR_1_PWM = ( _ABVAR_1_PWM + 5 ) ;
Serial.print(“PWM=”);
Serial.print(_ABVAR_1_PWM);
Serial.println();
analogWrite(_ABVAR_3_PINB , _ABVAR_1_PWM);
delay( 100 );
}

//————————————————————————-
//Esperimento 5
//————————————————————————-

int _ABVAR_1_PINRED = 0 ;
int _ABVAR_2_PINGREEN = 0 ;
int _ABVAR_3_PINBLUE = 0 ;
int _ABVAR_4_LUMI = 0 ;
int _ABVAR_5_BUIO = 0 ;
int _ABVAR_6_RED = 0 ;
int _ABVAR_7_GREEN = 0 ;
int _ABVAR_8_BLUE = 0 ;
int _ABVAR_9_RITARDO = 0 ;
int _ABVAR_10_LED = 0 ;
int _ABVAR_11_I = 0 ;

void COLOREBLUE();
void COLORERED();
void ACCENSIONE();
void COLOREGREEN();

void setup()
{
pinMode( _ABVAR_1_PINRED , OUTPUT);
pinMode( _ABVAR_2_PINGREEN , OUTPUT);
pinMode( _ABVAR_3_PINBLUE , OUTPUT);
_ABVAR_1_PINRED = 9 ;

_ABVAR_2_PINGREEN = 10 ;

_ABVAR_3_PINBLUE = 11 ;

_ABVAR_4_LUMI = 1 ;

_ABVAR_5_BUIO = 0 ;

}

void loop()
{
_ABVAR_6_RED = 255 ;
_ABVAR_7_GREEN = 255 ;
_ABVAR_8_BLUE = 255 ;
_ABVAR_9_RITARDO = 10 ;
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLORERED();
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLORERED();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLOREGREEN();
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLOREGREEN();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLOREBLUE();
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLOREBLUE();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLORERED();
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLOREGREEN();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_4_LUMI ;
COLOREBLUE();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLORERED();
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLOREGREEN();
delay( _ABVAR_9_RITARDO );
_ABVAR_10_LED = _ABVAR_5_BUIO ;
COLOREBLUE();
delay( _ABVAR_9_RITARDO );
}

void ACCENSIONE()
{
analogWrite(_ABVAR_1_PINRED , _ABVAR_6_RED);
analogWrite(_ABVAR_2_PINGREEN , _ABVAR_7_GREEN);
analogWrite(_ABVAR_3_PINBLUE , _ABVAR_8_BLUE);
delay( 20 );
}

void COLOREGREEN()
{
for(_ABVAR_11_I = 1;
1<=255?_ABVAR_11_I <= 255:_ABVAR_11_I >= 255;
1<=255?_ABVAR_11_I = _ABVAR_11_I + 1:_ABVAR_11_I = _ABVAR_11_I – 1)
{
if (( ( _ABVAR_10_LED ) == ( _ABVAR_5_BUIO ) ))
{
_ABVAR_7_GREEN = ( _ABVAR_7_GREEN + 1 ) ;
}
if (( ( _ABVAR_10_LED ) == ( _ABVAR_4_LUMI ) ))
{
_ABVAR_7_GREEN = ( _ABVAR_7_GREEN – 1 ) ;
}
ACCENSIONE();
}
}

void COLORERED()
{
for(_ABVAR_11_I = 1;
1<=255?_ABVAR_11_I <= 255:_ABVAR_11_I >= 255;
1<=255?_ABVAR_11_I = _ABVAR_11_I + 1:_ABVAR_11_I = _ABVAR_11_I – 1)
{
if (( ( _ABVAR_10_LED ) == ( _ABVAR_5_BUIO ) ))
{
_ABVAR_6_RED = ( _ABVAR_6_RED + 1 ) ;
}
if (( ( _ABVAR_10_LED ) == ( _ABVAR_4_LUMI ) ))
{
_ABVAR_6_RED = ( _ABVAR_6_RED – 1 ) ;
}
ACCENSIONE();
}
}

void COLOREBLUE()
{
for(_ABVAR_11_I = 1;
1<=255?_ABVAR_11_I <= 255:_ABVAR_11_I >= 255;
1<=255?_ABVAR_11_I = _ABVAR_11_I + 1:_ABVAR_11_I = _ABVAR_11_I – 1)
{
if (( ( _ABVAR_10_LED ) == ( _ABVAR_5_BUIO ) ))
{
_ABVAR_8_BLUE = ( _ABVAR_8_BLUE + 1 ) ;
}
if (( ( _ABVAR_10_LED ) == ( _ABVAR_4_LUMI ) ))
{
_ABVAR_8_BLUE = ( _ABVAR_8_BLUE – 1 ) ;
}
ACCENSIONE();
}
}
//————————————————————————-
//Esperimento 6
//————————————————————————-
int _ABVAR_1_CM = 0 ;
int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin)
{
long duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(20);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
if ((duration < 2) || (duration > 300)) return false;
return duration;
}
void setup()
{
digitalWrite( 6 , LOW );

Serial.begin(9600);
pinMode( 8 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
}

void loop()
{
_ABVAR_1_CM = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 6 , 7 ) ;
Serial.print(“CM=_”);
Serial.print(_ABVAR_1_CM);
Serial.println();
if (( ( _ABVAR_1_CM ) <= ( 20 ) ))
{
digitalWrite( 8 , HIGH );
}
if (( ( ( _ABVAR_1_CM ) > ( 20 ) ) && ( ( _ABVAR_1_CM ) < ( 40 ) ) ))
{
digitalWrite( 9 , HIGH );
}
if (( ( _ABVAR_1_CM ) >= ( 40 ) ))
{
digitalWrite( 10 , HIGH );
}
delay( 10 );
digitalWrite( 8 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
}

//————————————————————————-
//Esperimento 7
//————————————————————————-
/* Tastiera test
*
* Dimostrazione d’uso della libreria Keypad.
*
* Collegare la tastiera seguendo la sequenza di
* pin specificata in rowPins e colPins
*
*/
#include <Keypad.h>

const byte ROWS = 4; // Quattro righe
const byte COLS = 3; // Tre colonne
// Definisce la disposizione
char keys[ROWS][COLS] = {
{‘1′,’2′,’3’},
{‘4′,’5′,’6’},
{‘7′,’8′,’9’},
{‘#’,’0′,’*’}
};
// Collegare le righe della tastiera ROW0, ROW1, ROW2 e ROW3 ai pin specificati.
byte rowPins[ROWS] = { 9, 8, 7, 6 };
// Collegare le colonne della tastiera COL0, COL1 e COL2 ai pin specificati.
byte colPins[COLS] = { 12, 11, 10 };

// Creare la classe Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define ledpin 13 //usiamo il led sulla scheda.

void setup()
{
pinMode(ledpin,OUTPUT);
digitalWrite(ledpin, HIGH);
Serial.begin(9600);
}

void loop()
{
char key = kpd.getKey();//nella variabile key c’è il tasto premuto.

if(key) // Controllo se è un tasto valido.

{

switch (key)
{
case ‘*’:
digitalWrite(ledpin, LOW);//spegne il led 13
Serial.print(key);
break;
case ‘#’:
digitalWrite(ledpin, HIGH);//accende il led 13
Serial.print(key);
break;
default:
Serial.print(key);
}
}
}
//————————————————————————-
//Esperimento 8
//————————————————————————-

int _ABVAR_1_PWM = 0 ;
int _ABVAR_2_PINA = 0 ;
int _ABVAR_3_PINB = 0 ;
int _ABVAR_4_0 = 0 ;
bool _ABVAR_5_AVA_EX= false ;
bool _ABVAR_6_AVA_IN= false ;

void ANTIORARIO();
void ORARIO();
void ACCELERA();

void setup()
{
pinMode( 4 , INPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
Serial.begin(9600);
pinMode( _ABVAR_2_PINA , OUTPUT);
pinMode( _ABVAR_3_PINB , OUTPUT);
_ABVAR_1_PWM = 0 ;

_ABVAR_2_PINA = 9 ;

_ABVAR_3_PINB = 10 ;

analogWrite(9 , _ABVAR_4_0);

analogWrite(10 , _ABVAR_4_0);

_ABVAR_5_AVA_EX = HIGH ;

}

void loop()
{
_ABVAR_6_AVA_IN = digitalRead(4) ;
delay( 40 );
if (( ( _ABVAR_6_AVA_IN ) == ( _ABVAR_5_AVA_EX ) ))
{
_ABVAR_6_AVA_IN = HIGH ;
}
else
{
_ABVAR_6_AVA_IN = LOW ;
}
if (( ( _ABVAR_6_AVA_IN ) == ( HIGH ) ))
{
Serial.print(“AVA_IN_ANTI=”);
Serial.print(_ABVAR_6_AVA_IN);
Serial.println();
_ABVAR_1_PWM = map ( analogRead(5) , 0 , 1023 , 0 , 255 ) ;
ANTIORARIO();
ACCELERA();
_ABVAR_5_AVA_EX = _ABVAR_6_AVA_IN ;
}
else
{
Serial.print(“AVA_IN=”);
Serial.print(_ABVAR_6_AVA_IN);
Serial.println();
_ABVAR_1_PWM = map ( analogRead(5) , 0 , 1023 , 0 , 255 ) ;
ORARIO();
ACCELERA();
_ABVAR_5_AVA_EX = _ABVAR_6_AVA_IN ;
}
}

void ACCELERA()
{
analogWrite(_ABVAR_2_PINA , _ABVAR_4_0);
Serial.print(“PWM=”);
Serial.print(_ABVAR_1_PWM);
Serial.println();
analogWrite(_ABVAR_3_PINB , _ABVAR_1_PWM);
delay( 100 );
}

void ORARIO()
{
_ABVAR_2_PINA = 10 ;
_ABVAR_3_PINB = 9 ;
}

void ANTIORARIO()
{
_ABVAR_2_PINA = 9 ;
_ABVAR_3_PINB = 10 ;
}

//————————————————————————-
//Esperimento 9
//————————————————————————-

#define campioni 100

int inPin = 5;
float valore;
int pinLed = 4;

unsigned long media;

void setup() {

Serial.begin(9600);
}

void loop() {
for(int i = 0; i < campioni; i++){
valore = analogRead(inPin);
media = media + valore;
}
valore = media / campioni;
valore = constrain(valore, 0, 100);
valore = map(valore, 0, 100, 0, 255);
analogWrite(pinLed, valore);
Serial.println(valore);
media = 0;
}
//————————————————————————-
//Esperimento 10
//————————————————————————-
/*
Rilevamento temperatura con DS18B20
e visualizzazione su ldc 162B rev.A

I pin utilizzati:
* pin LCD RS al digital pin 12
* pin LCD EN (Enable) al digital pin 11
* pin LCD D4 al digital pin 5
* pin LCD D5 al digital pin 4
* pin LCD D6 al digital pin 3
* pin LCD D7 al digital pin 2
* pin LCD R/W a massa
* pin LCD VSS a massa
* pin LCD VO a massa (contrasto max)
* pin LCD VCC ai 5V
* pin LCD LED_A retroilluminazione + ai +5V
* pin LCD LED_K retroilluminazione – al C transistor

*/

// inclusione librerie
#include <LiquidCrystal.h> //gestisce il display LCD
#include <OneWire.h> //gestisce la comunicazione OneWire
#include <DallasTemperature.h> //gestisce il sensore DS18B20

// inizializza le librerie con i numeri dei pin corrispondenti
#define ONE_WIRE_BUS 8 //sul pin 8 l’uscita OneWire del sensore DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//nell’ordine pin del display RS EN D4 D5 D6 D7
int ill=10; //definisci pin per accendere o spegnere la retroilluminazione

void setup() {
int ill = LOW; //prepara spegnimento retroilluminazione
pinMode(ill,OUTPUT); //controlla la retroilluminazione
sensors.begin(); //definisce il sensore
lcd.begin(16, 2); // definisci numero di colonne e righe del LCD:
lcd.print(“Temperatura: “);// stampa messaggio su LCD.
}

void loop() {
sensors.requestTemperatures(); //leggi la temperatura dal sensore
// prepara il cursore sulla colonna 3 della riga 1
// (la linea 1 è la seconda perché si contano da zero):
lcd.setCursor(3, 1);
lcd.print (sensors.getTempCByIndex(0)); //stampa valore della temperatura
lcd.print (” Celsius”); //aggiungi la parola Celsius
digitalWrite(ill,HIGH); //accendi la retroilluminazione
delay(2000); //aspetta 2 secondi prima di un’altra misura
digitalWrite(ill,LOW); //spegni la retroilluminazione (indica che sta misurando)
}