provelab/arduino_es1/ATmega328P.pdf
http://arduino.cc/en/Main/ArduinoBoardUno
Esercizi:1) No Debug Nell' IDE non esiste lo strumento di debug quindi si vedrà nulla
void
setup()
{
int a,b,c;
a=1;
b=2;
c=a+b;
}
void
loop()
{
//non
fà nulla
}
2) Usare la seriale per il debuggingvoid
setup()
{
//
inizializza la comunicazione seriale
// la
seriale è l'unico strumento di debug
Serial.begin(9600);
int
a,b,c;
a=1;
Serial.print("a
= ");
Serial.println(a);
b=2;
Serial.print("b = ");
Serial.println(b);
c=a+b;
Serial.print("c
= ");
Serial.println(c);
watch("c",c);
}
void
loop()
{
//non
fà nulla
}
3) Un metodo più elegante per il
debugging via seriale#define watch(n,v) Serial.print(n); Serial.print(" = ");Serial.println(v);
void setup()
{
// inizializza la comunicazione seriale
// la seriale è l'unico strumento di debug
Serial.begin(9600);
int a,b,c;
a=1;
watch("a",a);
b=2;
watch("b",b);
c=a+b;
watch("c",c);
}
void loop()
{
//non fà nulla
}
4) Output digitale#define watch(n,v) Serial.print(n); Serial.print(" = ");Serial.println(v);
#define LedPin 3
void setup()
{
// inizializza la comunicazione seriale
// la seriale è l'unico strumento di debug
Serial.begin(9600);
pinMode(LedPin,OUTPUT);
}
void loop()
{
// Accende il LED
digitalWrite(LedPin,HIGH);
Serial.println("Led acceso");
delay(2000);
// Spegne il LED
digitalWrite(LedPin,LOW);
Serial.println("Led spento");
delay(2000);
}
5) Input digitale con antirimbalzo#define watch(n,v) Serial.print(n); Serial.print(" = ");Serial.println(v);
#define LedPin 3
#define PulPin 2
void setup()
{
// inizializza la comunicazione seriale
// la seriale è l'unico strumento di debug
Serial.begin(9600);
pinMode(PulPin,INPUT_PULLUP);
pinMode(LedPin,OUTPUT);
}
void loop()
{
//Polling
if (!digitalRead(PulPin))
{
Serial.println("Pulsante premuto");
// Complemanta stato LED
digitalWrite(LedPin,!digitalRead(LedPin));
delay(50);
//Attesa rilascio
while (!digitalRead(PulPin));
delay(50);
Serial.println("Pulsante rilasciato");
}
}

6) Input analogico e output PWM#define watch(n,v) Serial.print(n); Serial.print(" = ");Serial.println(v);
#define LedPin 3
#define PotPin A0
int ain;
void setup()
{
// inizializza la comunicazione seriale
// la seriale è l'unico strumento di debug
Serial.begin(9600);
pinMode(LedPin,OUTPUT);
}
void loop()
{
int v;
v=analogRead(PotPin);
if (ain!=v)
{
Serial.println(v);
ain=v;
v=map(v, 0, 1023, 0, 255);
analogWrite(LedPin,v);
}
}
7) Controllo luminosità PWM| Retroazione | Riferimento | Driver uscita |
|
|
![]() |
![]() |
#define watch(n,v) Serial.print(n); Serial.print(" = ");Serial.println(v);
//Controllo di luminosità
#define IFotores A0 // Ingresso fotoresistenza
#define IRiferimento A1 // Ingresso tensione riferimento
#define ULampada 3 // Uscita pilotaggio lampada
int uscita=0; // Uscita pilotaggio lampada
int riferimento;
int retroazione;
int errore;
void setup() {
Serial.begin(9600);
pinMode(ULampada, OUTPUT);
}
void loop()
{
riferimento=analogRead(IRiferimento);
retroazione=analogRead(IFotores);
errore=riferimento-retroazione;
watch("Errore=",errore);
uscita+=errore/2;
if (uscita>255)
uscita=255;
else
if (uscita<0)
uscita=0;
analogWrite(ULampada,uscita);
delay(100);
}