Worksheetsarduino_terze
Total questions: 84
Worksheet time: 2hrs 49mins
const int ledPin = 13;
void setup()
{ pinMode(ledPin, OUTPUT); }
void loop()
{ digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Qual è la funzione del comando pinMode(ledPin, OUTPUT); nello sketch?
A) Legge il valore di un pin digitale.
B) Imposta il pin del LED come uscita.
C) Imposta il pin del LED come ingresso.
D) Scrive un valore analogico su un pin.
const int ledPin = 13;
void setup()
{ pinMode(ledPin, OUTPUT); }
void loop()
{ digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Cosa fa la funzione digitalWrite(ledPin, HIGH);?
A) Imposta il LED in uno stato di bassa luminosità.
C) Accende il LED.
D) Non fa nulla al LED.
B) Spegne il LED.
const int ledPin = 13;
void setup()
{ pinMode(ledPin, OUTPUT); }
void loop()
{ digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Quanto tempo il LED rimane acceso o spento con il valore di delay(1000);?
A) 100 millisecondi.
B) 500 millisecondi.
C) 1000 millisecondi.
D) 2000 millisecondi.
const int ledPin = 13;
void setup()
{ pinMode(ledPin, OUTPUT); }
void loop()
{ digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Se vuoi che il LED lampeggi ogni mezzo secondo, quale valore dovresti impostare per delay()?
A) delay(250);
B) delay(500);
C) delay(1000);
D) delay(2000);
const int ledPin = 13;
setup()
{ pinMode(ledPin, OUTPUT);}
void loop()
{ digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Qual è il risultato di modificare il valore di delay() da 1000 a 500?
A) Il LED lampeggerà più lentamente.
B) Il LED lampeggerà alla stessa velocità.
C) Il LED lampeggerà più velocemente.
D) Il LED rimarrà acceso in modo continuo.
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Fade in from min to max in increments of 5 points:
for (int i = 0; i <= 255; i += 5) {
analogWrite (ledPin, i);
delay(10);
}
// Fade out from max to min in increments of 5 points:
for (int i = 255; i >= 0; i -= 5) {
Serial.println(i);
analogWrite(ledPin, i);
delay(10);
}
}
Cosa fa la funzione analogWrite(ledPin, i); nello sketch?
A) Accende il LED a piena luminosità.
B) Spegne il LED.
C) Imposta la luminosità del LED a un valore tra 0 e 255.
D) Legge il valore di luminosità del LED.
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i <= 255; i += 5) {
analogWrite(ledPin, i);
delay(10);
}
for (int i = 255; i >= 0; i -= 5) {
analogWrite(ledPin, i);
delay(10);
}
}
Qual è lo scopo del ciclo for nello sketch?
A) Eseguire un’azione una sola volta.
B) Eseguire un’azione per un numero indefinito di volte.
C) Eseguire un’azione per un numero definito di volte.
D) Impedire che il codice venga eseguito.
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Fade in from min to max in increments of 5 points:
for (int i = 0; i <= 255; i += 5) {
analogWrite (ledPin, i);
delay(10);
}
// Fade out from max to min in increments of 5 points:
for (int i = 255; i >= 0; i -= 5) {
Serial.println(i);
analogWrite(ledPin, i);
delay(10);
}
}
Se si desidera aumentare la velocità della dissolvenza del LED, quale parametro si dovrebbe modificare? sono possibili più possibilità di risposta individuarle tutte.
A) Il valore di i in analogWrite(ledPin, i);
B) Il numero di cicli nel ciclo for.
C) Il valore di delay(10);
D) Il numero del pin in const int ledPin = 9;
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Fade in from min to max in increments of 5 points:
for (int i = 0; i <= 255; i += 5) {
analogWrite (ledPin, i);
delay(10);
}
// Fade out from max to min in increments of 5 points:
for (int i = 255; i >= 0; i -= 5) {
Serial.println(i);
analogWrite(ledPin, i);
delay(10);
}
}
Quale affermazione descrive correttamente il comportamento del LED con lo sketch fornito?
A) Il LED rimarrà acceso in modo continuo.
B) Il LED lampeggerà rapidamente.
C) Il LED aumenterà e diminuirà di luminosità gradualmente.
D) Il LED cambierà colore.
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Fade in from min to max in increments of 5 points:
for (int i = 0; i <= 255; i += 5) {
analogWrite (ledPin, i);
delay(10);
}
// Fade out from max to min in increments of 5 points:
for (int i = 255; i >= 0; i -= 5) {
Serial.println(i);
analogWrite(ledPin, i);
delay(10);
}
}
Quale modifica allo sketch farebbe lampeggiare il LED invece di farlo dissolvere?
A) Sostituire analogWrite con digitalWrite.
B) Rimuovere i cicli for.
C) Cambiare il valore di ledPin.
D) Aumentare il valore di delay.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Cosa fa la funzione pinMode(PULSANTE, INPUT_PULLUP); nel setup()?
A) Configura il pulsante per generare un output.
B) Configura il pulsante come input con una resistenza di pull-up.
C) Configura il pulsante per ricevere un segnale analogico.
D) Configura il pulsante per disabilitare l’input.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Qual è lo scopo della funzione Serial.begin(9600);?
A) Imposta la velocità di trasmissione dei dati a 9600 bit per secondo.
B) Inizia un conto alla rovescia di 9600 millisecondi.
C) Accende tutti i LED contemporaneamente.
D) Configura il pulsante per essere premuto ogni 9600 millisecondi.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Che cosa indica if(digitalRead(PULSANTE)==LOW)?
A) Controlla se il pulsante non è premuto.
B) Controlla se il pulsante è premuto.
C) Imposta il pulsante su uno stato basso.
D) Legge un valore analogico dal pulsante.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Nel caso stato=1, cosa succede dopo che il tempo definito è trascorso?
A) Il LED_STATO0 si spegne e il LED_STATO1 si accende.
B) Tutti i LED si accendono.
C) Il programma si resetta.
D) Il LED_STATO2 inizia a lampeggiare.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Cosa rappresenta la variabile tempo?
A) Il numero di volte che il pulsante è stato premuto.
B) Il tempo trascorso dall’inizio del programma.
C) Il momento in cui il pulsante è stato premuto.
D) La durata del lampeggio dei LED.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
Serial.print("tempo invece vale ");
Serial.println(tempo);
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.print("stato=2 sto aspettando il rilascio del pulsante");
if(digitalRead(PULSANTE)==HIGH){
stato=0;
digitalWrite(LED_STATO1,0);
digitalWrite(LED_STATO2,1);}
break;
}
}
Cosa succede quando stato=0 e il pulsante viene premuto?
A) Il LED_STATO0 si accende
LED_STATO2 si spegne e stato diventa 1.
B) Il LED_STATO1 si
accende, LED_STATO2 si spegne e stato diventa 1.
C) Il LED_STATO2 inizia a lampeggiare.
D) Tutti i LED si spengono.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Qual è il ruolo della funzione millis() nel programma?
A) Genera un numero casuale ogni volta che viene chiamata.
B) Restituisce il numero di millisecondi trascorsi dall’avvio del programma Arduino.
C) Imposta un ritardo di un numero specifico di millisecondi.
D) Controlla la luminosità dei LED.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Nel caso stato=2, cosa aspetta il programma per cambiare stato?
A) Che il pulsante venga premuto di nuovo.
B) Che il LED_STATO1 si spenga.
C) Che il pulsante venga rilasciato.
D) Che passino 50 millisecondi.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Qual è lo scopo principale dello sketch?
A. Generare numeri casuali.
B. Controllare l'accensione e lo spegnimento di LED in base a un pulsante e a un timer.
C. Effettuare calcoli matematici complessi.
D. Comunicare con un sensore di temperatura.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Quale funzione svolge la variabile "stato" nello sketch?
A. Memorizza il valore analogico letto da un sensore.
B. Tiene traccia dello stato corrente dell'automa.
C. Calcola il tempo trascorso.
D. Comunicare con un sensore di temperatura.D. Controlla la velocità di comunicazione seriale.
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
Cosa indica il LED_STATO2 quando è acceso?
// C++ code
//
#define PULSANTE 2
#define LED_STATO0 3
#define LED_STATO1 4
#define LED_STATO2 5
int stato=0;
int tempo=0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED_STATO0, OUTPUT);
pinMode(LED_STATO1, OUTPUT);
pinMode(LED_STATO2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch(stato){
case 0:
Serial.print("stato=0 sto aspettando un comando ");
Serial.println(millis());
digitalWrite(LED_STATO2,0);//quale dei due lavora?
if(digitalRead(PULSANTE)==LOW)
{
stato=1;
digitalWrite(LED_STATO2,0);//quale dei due lavora?
digitalWrite(LED_STATO0,1);
tempo=millis();
}
break;
case 1:
Serial.print("stato=1 sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=50 ){
stato=2;
digitalWrite(LED_STATO0,0);
digitalWrite(LED_STATO1,1);}
break;
case 2:
Serial.println("stato=2 sto aspettando il rilascio del pulsante");
if (digitalRead(PULSANTE)==HIGH) stato=0 ;
digitalWrite(LED_STATO2,1);
digitalWrite(LED_STATO1,0);
break;
}
}
lo schema proposto è una macchina sequenziale?
SI
NO
A VOLTE
ALCUNE PARTI SI ED ALCUNE PARTI NO
Qual è la funzione utilizzata per accendere un LED collegato a un pin digitale?
(a) digitalWrite()
(b) analogWrite()
(c) pinMode()
(d) setup()
Come si invia un valore a un pin PWM (Pulse Width Modulation) per controllare la luminosità di un LED?
const int ledPin = 9; // Pin del LED
int luminosita = 0; // Valore di luminosità
int incremento = 1; // Incremento per il fading
int attesa = 5; // Tempo di attesa tra le transizioni
void setup() {
pinMode(ledPin, OUTPUT); // Imposta il pin come uscita
}
void loop() {
analogWrite(ledPin, luminosita); // Scrive il valore di luminosità al LED
luminosita += incremento; // Aumenta gradualmente la luminosità
if (luminosita < 0 || luminosita > 255) {
incremento *= -1; // Inverti l'incremento per il fading
luminosita += incremento;
}
delay(attesa); // Aggiungi un ritardo per rendere visibile l'effetto
}
(a) Usando la funzione digitalWrite()
(b) Usando la funzione analogWrite()
(c) Usando la funzione pinMode()
(d) Tutte le risposte precedenti
Come si include una libreria in uno sketch Arduino?
(a) Usando la direttiva #include
(b) Caricando la libreria nella scheda Arduino
(c) Creando una nuova libreria
(d) Tutte le risposte precedenti
Qual è la differenza tra una variabile locale e una variabile globale in Arduino?
a) Le variabili locali sono visibili solo all'interno della funzione in cui sono dichiarate, mentre le variabili globali sono visibili in tutto lo sketch.
(b) Le variabili locali sono memorizzate nella memoria RAM, mentre le variabili globali sono memorizzate nella memoria flash.
(c) Le variabili locali possono essere utilizzate solo con i tipi di dati numerici, mentre le variabili globali possono essere utilizzate con qualsiasi tipo di dati.
(d) Tutte le risposte precedenti
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=50)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
Cosa fa la funzione digitalWrite (LED, statoLed); quando viene chiamata?
A) Legge lo stato del pulsante.
B) Cambia lo stato del LED da acceso a spento o viceversa.
C) Imposta il LED su uno stato alto.
D) Non cambia lo stato del LED.
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=50)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
Quando il programma passa allo stato 2?
A) Quando il pulsante viene premuto
B) Quando tempo raggiunge o supera 50
C) Quando il pulsante viene rilasciato
D) Non specificato
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=50)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
Qual è lo scopo della resistenza di pull-up interna sul pin PULSANTE?
(a) Per proteggere il pin da sovratensioni.
(b) Per garantire un livello logico alto (5V) quando il pulsante non viene premuto.
(c) Per aumentare la sensibilità del pulsante.
(d) Per diminuire il consumo energetico.
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=tempoAccensioneDesiderato)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
che succede se modifichiamo il controllo dell'istruzione if(tempo>=tempoAccensioneDesiderato)stato=2;
in
if(tempo==tempoAccensioneDesiderato)stato=2;
(a) il programma smette di essere ciclico e viene eseguito una volta sola, dopodichè rimane sempre spento
(b) il led rimane sempre acceso e non viene mai sentito il pulsante
(c) .il led rimane sempre spentoe non viene mai sentito il pulsante
(d) il led lampeggia ciclicamente
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
int tempoAccensioneDesiderato = 50;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=tempoAccensioneDesiderato)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
Cosa succede quando il pulsante viene rilasciato?
(a) Il LED si accende.
(b) Il LED si spegne.
(c) Il programma passa allo stato di timeout.
(d) Il programma ritorna allo stato di attesa di pressione del pulsante.
#define PULSANTE 2
#define LED 3
int stato=0;
int tempo=0;
int statoLed =0;
void setup()
{
pinMode(PULSANTE, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);}
void loop()
{
switch(stato)
{case 0:
Serial.println("stato=0");
Serial.println(tempo);
if(digitalRead(PULSANTE)==0)
{
statoLed = !statoLed;
digitalWrite (LED, statoLed);
stato=1;
}
break;
case 1:
tempo++;
if(tempo>=50)stato=2;
Serial.println("stato=1");
break;
case 2:
if(digitalRead(PULSANTE)==1)stato=0;
Serial.println("stato=2");
break;
}
delay(1);
}
Qual è lo scopo della variabile statoLed nello sketch?
A) Conta il numero di volte che il pulsante viene premuto.
B) Memorizza il tempo trascorso dall’ultima pressione del pulsante.
C) Tiene traccia dello stato corrente del LED.
D) Determina se il pulsante è premuto o rilasciato.
int sensorValue = 0;
int ledrosso = 6;
int ledblu = 7;
int stato = 0;
void setup()
{
pinMode(A0, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
delay(10);
if(sensorValue <= -20){
digitalWrite(ledrosso,1);
}
else{
digitalWrite(ledrosso,0);
}
if(sensorValue >= 30){
digitalWrite(ledblu,1);
}
else{
digitalWrite(ledblu,0);
}
}
In quali condizioni si accende il LED rosso?
(a) Se il valore del sensore è maggiore di 30.
(b) Se il valore del sensore è minore o uguale a -20.
(c) Se il valore del sensore è compreso tra 20 e 358.
(d) Sempre.
int sensorValue = 0;
int ledrosso = 6;
int ledblu = 7;
int stato = 0;
void setup()
{
pinMode(A0, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
delay(10);
if(sensorValue <= -20){
digitalWrite(ledrosso,1);
}
else{
digitalWrite(ledrosso,0);
}
if(sensorValue >= 30){
digitalWrite(ledblu,1);
}
else{
digitalWrite(ledblu,0);
}
}
Cosa succede se il valore del sensore è compreso tra -20 e 30?
(a) Entrambi i LED si accendono.
(b) Entrambi i LED si spengono.
(c) Si accende il LED rosso e si lampeggia il LED blu.
(d) Si accende il LED blu e si lampeggia il LED rosso.
int sensorValue = 0;
int ledrosso = 6;
int ledblu = 7;
int stato = 0;
void setup()
{
pinMode(A0, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
delay(10);
if(sensorValue <= -20){
digitalWrite(ledrosso,1);
}
else{
digitalWrite(ledrosso,0);
}
if(sensorValue >= 30){
digitalWrite(ledblu,1);
}
else{
digitalWrite(ledblu,0);
}
}
Perché la funzione map() viene utilizzata in questo codice?
(a) Per convertire i valori analogici in valori digitali.
(b) Per rimappare il valore del sensore in un intervallo specifico.
(c) Per calibrare il sensore.
(d) Per aumentare la precisione delle misurazioni.
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
Servo myservo9;
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int scelta=0;
bool condizione=0; //consenso per servo11
#define BASE_TEMPO 10
void setup()
{
myservo9.attach(SERVO9);
myservo9.write(angolo9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(PULS4)==0)
{angolo9++;
myservo9.write(angolo9);
}
}
A cosa serve la costante SERVO9?
(a) A definire il numero del pin a cui è collegato il LED.
(b) A definire il numero del pin a cui è collegato il primo servomotore.
(c) A impostare il pin PULS4 come input.
(d) A controllare la velocità di rotazione dei servomotori.
#define SERVO9 9#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
Servo myservo9;
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int scelta=0;
bool condizione=0; //consenso per servo11
#define BASE_TEMPO 10
void setup()
{
myservo9.attach(SERVO9);
myservo9.write(angolo9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(PULS4)==0)
{angolo9++;
myservo9.write(angolo9);
}
}
Qual è la posizione iniziale del servomotore?
(a) 0 gradi
(b) 45 gradi
(c) 60 gradi
(d) 180 gradi
#define SERVO9 9#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
Servo myservo9;
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int scelta=0;
bool condizione=0; //consenso per servo11
#define BASE_TEMPO 10
void setup()
{
myservo9.attach(SERVO9);
myservo9.write(angolo9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(PULS4)==0)
{angolo9++;
myservo9.write(angolo9);
}
}
A cosa serve il pulsante PULS4?
(a) Per accendere il LED.
(b) Per far ruotare il servomotore in senso orario.
(c) Per far ruotare il servomotore in senso antiorario.
(d) Per registrare i valori del sensore su un file.
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=45;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
int scelta=0;
Servo myservo9; // dichiarazione del serrvo su pin 9
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int stato=0;
bool condizione=0;
#define BASE_TEMPO 10
void setup()
{
//myservo.attach(9); // Associa il servo al pin 9
myservo9.attach(SERVO9); // Associa il servo al pin 9
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0://attende un comando
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;}
myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180){angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;break;
}
}
Qual è la posizione iniziale del servomotore?
(a) 0 gradi
(b) 45 gradi
(c) 60 gradi
(d) 90 gradi
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=45;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
int scelta=0;
Servo myservo9; // dichiarazione del serrvo su pin 9
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int stato=0;
bool condizione=0;
#define BASE_TEMPO 10
void setup()
{
//myservo.attach(9); // Associa il servo al pin 9
myservo9.attach(SERVO9); // Associa il servo al pin 9
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0://attende un comando
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;}
myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180){angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;break;
}
}
Cosa fa il codice quando viene premuto il pulsante PULS4 in stato 0 (scelta=0)?
(a) Fa ruotare il servomotore in senso antiorario.
(b) Inizia la rotazione del servomotore in senso antiorario fino a 180 gradi.
(c) Non fa nulla.
(d) Aumenta la velocità di rotazione del servomotore.
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=45;
int angolo10=90;// ampliamento futura
int angolo11=45;// ampliamento futuro
int scelta=0;
Servo myservo9; // dichiarazione del serrvo su pin 9
Servo myservo10;// ampliamento futuro
Servo myservo11;//ampliamento futuro
int stato=0;
bool condizione=0;
#define BASE_TEMPO 10
void setup()
{
//myservo.attach(9); // Associa il servo al pin 9
myservo9.attach(SERVO9); // Associa il servo al pin 9
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0://attende un comando
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;}
myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180){angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;break;
}
}
Qual è la condizione che fa sì che il servo motore 9 si muova alla massima posizione (180 gradi)?
(a) Il pulsante è premuto e angolo9 è inferiore a 180 gradi.
(b) Il pulsante è rilasciato e stato è uguale a 1.
(c) Il pulsante è premuto e scelta è uguale a 2.
(d) Il pulsante è rilasciato e angolo9 è uguale a 60 gradi.
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0: myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;}
myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
In quale stato del programma il servo motore 9 si muove nella direzione di incremento della posizione?
(a) scelta = 0 (attesa comando)
(b) scelta = 1 (movimento servo)
(c) scelta = 2 (mantenimento posizione)
(d) scelta = 3 (ripristino posizione iniziale)
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0: myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;}
myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
Quale funzione viene utilizzata per controllare il servo motore 9?
(a) pinMode()
(b) setup()
(c) loop()
(d) myservo9.write()
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0:
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;} myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
Quale variabile viene utilizzata per memorizzare la posizione attuale del servo motore 9?
(a) SERVO9
(b) angolo9
(c) myservo9
(d) scelta
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0:
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;} myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
Cosa fa il servo motore 9 quando il pulsante viene rilasciato nello stato scelta = 1 (movimento servo)?
(a) Si muove alla massima posizione (180 gradi).
(b) Mantiene la sua posizione attuale.
(c) Si muove alla posizione iniziale (60 gradi).
(d) Passa allo stato scelta = 0 (attesa comando).
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0:
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;} myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
A cosa serve la variabile stato?
(a) Memorizza lo stato attuale del pulsante (premuto o rilasciato almeno una volta)
(b) Memorizza la posizione precedente del servo motore 9.
(c) Controlla la velocità del servo motore 9.
(d) Non è utilizzata nel programma.
#define SERVO9 9
#define PULS4 4
#include <Servo.h>
int angolo9=60;
int angolo10=90;
int angolo11=45;
int scelta=0;
Servo myservo9;
Servo myservo10;
Servo myservo11;
int stato=0;
bool condizione=0;
void setup()
{
myservo9.attach(SERVO9);
pinMode(PULS4, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
switch(scelta){
case 0:
myservo9.write(angolo9);
Serial.println("scelta=0 sto aspettando un comando ");
if(digitalRead(PULS4)==0){scelta=1;} myservo9.write(angolo9);
break;
case 1:
Serial.println("scelta=1 ");
if(digitalRead(PULS4)==0 && angolo9<180)
{angolo9++;
myservo9.write(angolo9); }
if (digitalRead(PULS4)==1){ scelta=0;stato=1;angolo9=0;}
if(angolo9>= 180) scelta=2;
break;
case 2:
Serial.println("scelta=2 ");
myservo9.write(angolo9);
if(digitalRead(PULS4)==1) {stato=0;scelta=3;
break;}
case 3:
Serial.println("scelta=3 ");
if(digitalRead(PULS4)==1){angolo9=60;}
if(digitalRead(PULS4)==0)scelta=0;
break; }
}
Cosa fa la funzione setup()?
(a) Controlla il movimento del servo motore 9.
(b) Inizializza la comunicazione seriale e configura il pin del pulsante.
(c) Definisce le variabili globali del programma.
(d) Esegue un ciclo infinito di istruzioni.
e) non è utilizzata nel programma
// C++ code
//
// Definizione dei pin per i dispositivi
#define frullatore 2
#define mescolatore 3
#define impastatore 4
#define motore 11
int velocitaMassima = 255;
void setup() {
// Imposta i pin come input o output
pinMode(frullatore, INPUT);
pinMode(mescolatore, INPUT);
pinMode(impastatore, INPUT);
pinMode(motore, OUTPUT);
// Inizializza la comunicazione seriale per debug
Serial.begin(9600);
}
void loop() {
// Verifica se il frullatore è attivo
if (digitalRead(frullatore) == HIGH) {
Serial.println("Frullare in corso...");
frullare(); // Chiama la funzione per frullare
}
// Verifica se il mescolatore è attivo
if (digitalRead(mescolatore) == HIGH) {
Serial.println("Mescolare in corso...");
mescolare(); // Chiama la funzione per mescolare
}
// Verifica se l'impastatore è attivo
if (digitalRead(impastatore) == HIGH) {
Serial.println("Impastare in corso...");
impastare(); // Chiama la funzione per impastare
}
}
// Funzione per eseguire l'operazione di frullare
void frullare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore
for (int i = 0; i <= velocitaMassima; i++) {
analogWrite(motore, i);
delay(2000 / 255);
}
// Attendi che il frullatore sia ancora attivo
while (digitalRead(frullatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Frullare completato.");
}
// Funzione per eseguire l'operazione di mescolare
void mescolare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (30% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.3; i++) {
analogWrite(motore, i);
delay(9000 / 255);
}
// Attendi che il mescolatore sia ancora attivo
while (digitalRead(mescolatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Mescolare completato.");
}
// Funzione per eseguire l'operazione di impastare
void impastare() {
// Ripeti l'operazione di impastare per 5 cicli
for (int j = 0; j < 5; j++) {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (20% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.2; i++) {
analogWrite(motore, i);
delay(8000 / 255);
}
delay(1000); // Attendi 1 secondo
// Riduci gradualmente la velocità del motore
for (int i = velocitaMassima * 0.2; i >= 0; i--) {
analogWrite(motore, i);
delay(8000 / 255);
}
analogWrite(motore, 0);
Serial.println("Impastare completato.");
if (j < 4) {
delay(1000); // Attendi 1 secondo tra i cicli
}
}
}
Quale percentuale della velocità massima viene utilizzata per la funzione di mescolare?
(a) 100%
(b) 50%
(c) 30%
(d) 20%
// C++ code
//
// Definizione dei pin per i dispositivi
#define frullatore 2
#define mescolatore 3
#define impastatore 4
#define motore 11
int velocitaMassima = 255;
void setup() {
// Imposta i pin come input o output
pinMode(frullatore, INPUT);
pinMode(mescolatore, INPUT);
pinMode(impastatore, INPUT);
pinMode(motore, OUTPUT);
// Inizializza la comunicazione seriale per debug
Serial.begin(9600);
}
void loop() {
// Verifica se il frullatore è attivo
if (digitalRead(frullatore) == HIGH) {
Serial.println("Frullare in corso...");
frullare(); // Chiama la funzione per frullare
}
// Verifica se il mescolatore è attivo
if (digitalRead(mescolatore) == HIGH) {
Serial.println("Mescolare in corso...");
mescolare(); // Chiama la funzione per mescolare
}
// Verifica se l'impastatore è attivo
if (digitalRead(impastatore) == HIGH) {
Serial.println("Impastare in corso...");
impastare(); // Chiama la funzione per impastare
}
}
// Funzione per eseguire l'operazione di frullare
void frullare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore
for (int i = 0; i <= velocitaMassima; i++) {
analogWrite(motore, i);
delay(2000 / 255);
}
// Attendi che il frullatore sia ancora attivo
while (digitalRead(frullatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Frullare completato.");
}
// Funzione per eseguire l'operazione di mescolare
void mescolare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (30% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.3; i++) {
analogWrite(motore, i);
delay(9000 / 255);
}
// Attendi che il mescolatore sia ancora attivo
while (digitalRead(mescolatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Mescolare completato.");
}
// Funzione per eseguire l'operazione di impastare
void impastare() {
// Ripeti l'operazione di impastare per 5 cicli
for (int j = 0; j < 5; j++) {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (20% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.2; i++) {
analogWrite(motore, i);
delay(8000 / 255);
}
delay(1000); // Attendi 1 secondo
// Riduci gradualmente la velocità del motore
for (int i = velocitaMassima * 0.2; i >= 0; i--) {
analogWrite(motore, i);
delay(8000 / 255);
}
analogWrite(motore, 0);
Serial.println("Impastare completato.");
if (j < 4) {
delay(1000); // Attendi 1 secondo tra i cicli
}
}
}
Quante volte viene ripetuto il ciclo di aumento e diminuzione della velocità del motore durante la funzione di impastare?
(a) 1
(b) 3
(c) 5
(d) 4
// C++ code
//
// Definizione dei pin per i dispositivi
#define frullatore 2
#define mescolatore 3
#define impastatore 4
#define motore 11
int velocitaMassima = 255;
void setup() {
// Imposta i pin come input o output
pinMode(frullatore, INPUT);
pinMode(mescolatore, INPUT);
pinMode(impastatore, INPUT);
pinMode(motore, OUTPUT);
// Inizializza la comunicazione seriale per debug
Serial.begin(9600);
}
void loop() {
// Verifica se il frullatore è attivo
if (digitalRead(frullatore) == HIGH) {
Serial.println("Frullare in corso...");
frullare(); // Chiama la funzione per frullare
}
// Verifica se il mescolatore è attivo
if (digitalRead(mescolatore) == HIGH) {
Serial.println("Mescolare in corso...");
mescolare(); // Chiama la funzione per mescolare
}
// Verifica se l'impastatore è attivo
if (digitalRead(impastatore) == HIGH) {
Serial.println("Impastare in corso...");
impastare(); // Chiama la funzione per impastare
}
}
// Funzione per eseguire l'operazione di frullare
void frullare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore
for (int i = 0; i <= velocitaMassima; i++) {
analogWrite(motore, i);
delay(2000 / 255);
}
// Attendi che il frullatore sia ancora attivo
while (digitalRead(frullatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Frullare completato.");
}
// Funzione per eseguire l'operazione di mescolare
void mescolare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (30% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.3; i++) {
analogWrite(motore, i);
delay(9000 / 255);
}
// Attendi che il mescolatore sia ancora attivo
while (digitalRead(mescolatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Mescolare completato.");
}
// Funzione per eseguire l'operazione di impastare
void impastare() {
// Ripeti l'operazione di impastare per 5 cicli
for (int j = 0; j < 5; j++) {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (20% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.2; i++) {
analogWrite(motore, i);
delay(8000 / 255);
}
delay(1000); // Attendi 1 secondo
// Riduci gradualmente la velocità del motore
for (int i = velocitaMassima * 0.2; i >= 0; i--) {
analogWrite(motore, i);
delay(8000 / 255);
}
analogWrite(motore, 0);
Serial.println("Impastare completato.");
if (j < 4) {
delay(1000); // Attendi 1 secondo tra i cicli
}
}
}
Cosa succede se si tiene premuto il pulsante del frullatore dopo che il processo di frullamento è terminato?
(a) Il motore continua a frullare alla massima velocità.
(b) Il motore si ferma e il programma attende il successivo comando.
(c) Il motore inverte la direzione di rotazione.
(d) Il programma si blocca.
// C++ code
//
// Definizione dei pin per i dispositivi
#define frullatore 2
#define mescolatore 3
#define impastatore 4
#define motore 11
int velocitaMassima = 255;
void setup() {
// Imposta i pin come input o output
pinMode(frullatore, INPUT);
pinMode(mescolatore, INPUT);
pinMode(impastatore, INPUT);
pinMode(motore, OUTPUT);
// Inizializza la comunicazione seriale per debug
Serial.begin(9600);
}
void loop() {
// Verifica se il frullatore è attivo
if (digitalRead(frullatore) == HIGH) {
Serial.println("Frullare in corso...");
frullare(); // Chiama la funzione per frullare
}
// Verifica se il mescolatore è attivo
if (digitalRead(mescolatore) == HIGH) {
Serial.println("Mescolare in corso...");
mescolare(); // Chiama la funzione per mescolare
}
// Verifica se l'impastatore è attivo
if (digitalRead(impastatore) == HIGH) {
Serial.println("Impastare in corso...");
impastare(); // Chiama la funzione per impastare
}
}
// Funzione per eseguire l'operazione di frullare
void frullare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore
for (int i = 0; i <= velocitaMassima; i++) {
analogWrite(motore, i);
delay(2000 / 255);
}
// Attendi che il frullatore sia ancora attivo
while (digitalRead(frullatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Frullare completato.");
}
// Funzione per eseguire l'operazione di mescolare
void mescolare() {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (30% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.3; i++) {
analogWrite(motore, i);
delay(9000 / 255);
}
// Attendi che il mescolatore sia ancora attivo
while (digitalRead(mescolatore) == HIGH) {
// Attesa
}
analogWrite(motore, 0);
Serial.println("Mescolare completato.");
}
// Funzione per eseguire l'operazione di impastare
void impastare() {
// Ripeti l'operazione di impastare per 5 cicli
for (int j = 0; j < 5; j++) {
analogWrite(motore, 0);
// Aumenta gradualmente la velocità del motore (20% della velocità massima)
for (int i = 0; i <= velocitaMassima * 0.2; i++) {
analogWrite(motore, i);
delay(8000 / 255);
}
delay(1000); // Attendi 1 secondo
// Riduci gradualmente la velocità del motore
for (int i = velocitaMassima * 0.2; i >= 0; i--) {
analogWrite(motore, i);
delay(8000 / 255);
}
analogWrite(motore, 0);
Serial.println("Impastare completato.");
if (j < 4) {
delay(1000); // Attendi 1 secondo tra i cicli
}
}
}
Qual è la funzione della variabile velocitaMassima?
(a) Memorizza lo stato attuale del motore (acceso o spento).
(b) Definisce la velocità massima di rotazione del motore.
(c) Memorizza il numero di cicli di impastamento completati.
(d) Controlla la direzione di rotazione del motore.
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// read the input on analog pin 0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
if(sensorValue>512){
digitalWrite(Input1, HIGH); // Rotazione in un verso
digitalWrite(Input2, LOW);}
else {
digitalWrite(Input1, LOW); // Rotazione verso opposto
digitalWrite(Input2, HIGH);
}
}
Qual è il compito del pin A0 nel codice fornito?
A. Controllare la direzione di rotazione
B. Leggere un valore di sensore
C. Attivare un LED
D. Eseguire un'operazione matematica
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// read the input on analog pin 0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
if(sensorValue>512){
digitalWrite(Input1, HIGH); // Rotazione in un verso
digitalWrite(Input2, LOW);}
else {
digitalWrite(Input1, LOW); // Rotazione verso opposto
digitalWrite(Input2, HIGH);
}
}
Cosa fa l'istruzione Serial.begin(9600) nel setup?
A. Attiva il sensore di temperatura
B. Apre la porta seriale ed imposta la velocità di trasmissione (baud rate) seriale
C. Definisce una variabile di tipo seriale
D. Imposta la velocità di rotazione del motore
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// read the input on analog pin 0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
if(sensorValue>512){
digitalWrite(Input1, HIGH); // Rotazione in verso anti orario
digitalWrite(Input2, LOW);}
else {
digitalWrite(Input1, LOW); // Rotazione verso orario
digitalWrite(Input2, HIGH);
}
}
Cosa succede se il valore del sensore è superiore a 512?
A. Il motore ruota in verso orario
B. Il motore si ferma
C. Il motore ruota in verso antiorario
D. Il sensore si disattiva
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// Leggi il valore dal potenziometro collegato al pin analogico A0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
// Mappa il valore letto (0-1023) a un intervallo di velocità (ad esempio, 0-255):
int speed = map(sensorValue, 0, 1023, 0, 255);
// Imposta la velocità del motore utilizzando PWM:
analogWrite(Input1, speed);
analogWrite(Input2, speed);
}
In che modo la funzione map() viene utilizzata in questo codice?
(a) Per convertire un valore analogico in un valore digitale
(b) Per mappare un valore da un intervallo a un altro
(c) Per generare un segnale PWM
(d) Per leggere un valore da un pin digitale
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// Leggi il valore dal potenziometro collegato al pin analogico A0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
// Mappa il valore letto (0-1023) a un intervallo di velocità (ad esempio, 0-255):
int speed = map(sensorValue, 0, 1023, 0, 255);
// Imposta la velocità del motore utilizzando PWM:
analogWrite(Input1, speed);
analogWrite(Input2, speed);
}
Cosa fa la funzione analogWrite(Input1, speed);?
riflettere sulle risposte che aggiungono informazioni
(a) Imposta la velocità del motore collegato al pin Input1
(b) Legge il valore dal pin Input1
(c) Inverte la direzione del motore collegato al pin Input1
(d) Fa lo stesso di analogWrite(Input2, speed);
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// Leggi il valore dal potenziometro collegato al pin analogico A0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
// Mappa il valore letto (0-1023) a un intervallo di velocità (ad esempio, 0-255):
int speed = map(sensorValue, 0, 1023, 0, 255);
// Imposta la velocità del motore utilizzando PWM:
analogWrite(Input1, speed);
analogWrite(Input2, speed);
}
Cosa succede al motore se il valore sensorValue è 0?
(a) Ruota alla massima velocità
(b) Ruota alla minima velocità1
(c) Non ruota
(d) Inverte la direzione
const int Input1 = 2; // Comando 1 direzione rotazione diretta
const int Input2 = 3; // Comando 2 direzione rotazione inversa
int sensorValue = 0;
void setup() {
pinMode(Input1, OUTPUT); // Pin 2 output
pinMode(Input2, OUTPUT); // Pin 3 output
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop() {
// Leggi il valore dal potenziometro collegato al pin analogico A0:
sensorValue = analogRead(A0);
Serial.println(sensorValue);
// Mappa il valore letto (0-1023) a un intervallo di velocità (ad esempio, 0-255):
int speed = map(sensorValue, 0, 1023, 0, 255);
// Imposta la velocità del motore utilizzando PWM:
analogWrite(Input1, speed);
analogWrite(Input2, speed);
}
Descrivi il concetto di Duty cycle applicato in questo programma
esempio di utilizzo di una funzione
#define TEMPO 250
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
lampeggia(TEMPO);
}
// blink LED una volta
// per far si che la funzione accetti un parametro in input
// bisogna dichiarare il tipo del parametro in ingresso
// nella funzione lampeggia: int pausa
void lampeggia(int pausa)
{
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausa); // pausa: valore inserito nella variabile "pausa"
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausa); // pausa: valore inserito nella variabile "pausa"
}
Quale comando devo modificare per rallentare il lampeggio a 500 msec ?
https://www.tinkercad.com/things/jPEiEkwMxSy-funzionevalori
#define TEMPO 1000
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_BUILTIN, LOW);
pinMode(LED_BUILTIN, OUTPUT);
#define TEMPO1 250
#define TEMPO2 750
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
lampeggia(TEMPO1, TEMPO2);
}
// blink LED una volta
// per far si che la funzione accetti duen parametri in input
// bisogna dichiarare il tipo per ogni parametro in ingresso
// nella funzione lampeggia: int pausaOn e int pausaOff
void lampeggia(int pausaOn, int pausaOff)
{
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausaOn); // delay LED ON
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausaOff); // delay LED OFF
}
Qual è il tempo di spegnimento del LED?
(a) 250 millisecondi
(b) 750 millisecondi
(c) Il tempo di accensione varia in base ai valori di TEMPO1 e TEMPO2. ed è la differenza tra i due valori
(d) Il tempo di accensione non è definito nello sketch.
#define TEMPO1 250
#define TEMPO2 750
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
lampeggia(TEMPO1, TEMPO2);
}
// blink LED una volta
// per far si che la funzione accetti duen parametri in input
// bisogna dichiarare il tipo per ogni parametro in ingresso
// nella funzione lampeggia: int pausaOn e int pausaOff
void lampeggia(int pausaOn, int pausaOff)
{
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausaOn); // delay LED ON
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausaOff); // delay LED OFF
}
Qual è il tempo di accensione del LED?
(a) 250 millisecondi
(b) 750 millisecondi
(c) Il tempo di accensione varia in base ai valori di TEMPO1 e TEMPO2 ed è la somma dei due tempi
(d) Il tempo di accensione non è definito nello sketch.
#define TEMPO1 250
#define TEMPO2 750
#define NUM_LAMPEGGI 5
#define SELETTORE 12
// chiave e la variabile che consente l'esecuzione della
// chiamata della funzione lampegga una sola volta
bool chiave = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(SELETTORE , INPUT_PULLUP);
Serial.begin (115200);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
chiave=digitalRead(SELETTORE);
if (chiave == 0) {Serial.println (chiave);
digitalWrite(LED_BUILTIN,1);}
if (chiave == 1) {Serial.println (chiave);
lampeggia(TEMPO1, TEMPO2, NUM_LAMPEGGI);}
}
// blink LED una volta
// per far si che la funzione accetti tre parametri in input
// bisogna dichiarare il tipo per ogni parametro in ingresso
// nella funzione lampeggia: int pausaOn, int pausaOff, int contatore
// la variabile contatore definisce il numero di cicli di lampeggio
void lampeggia(int pausaOn, int pausaOff, int contatore)
{
for (int i = 0; i < contatore; i++) {
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausaOn); // delay LED ON
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausaOff); // delay LED OFF
}
}
che cosa gestisce il SELETTORE nella posizione di figura ?
spegne o mantiene spento il LED
accende o mantiene acceso il LED
Non esegue nessuna azione sul LED
comanda la funzione che poi permette al LED di lampeggiare
#define TEMPO1 250
#define TEMPO2 750
#define NUM_LAMPEGGI 5
#define SELETTORE 12
// chiave e la variabile che consente l'esecuzione della
// chiamata della funzione lampegga una sola volta
bool chiave = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(SELETTORE , INPUT_PULLUP);
Serial.begin (115200);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
chiave=digitalRead(SELETTORE);
if (chiave == 0) {Serial.println (chiave);
digitalWrite(LED_BUILTIN,1);}
if (chiave == 1) {Serial.println (chiave);
lampeggia(TEMPO1, TEMPO2, NUM_LAMPEGGI);}
}
// blink LED una volta
// per far si che la funzione accetti tre parametri in input
// bisogna dichiarare il tipo per ogni parametro in ingresso
// nella funzione lampeggia: int pausaOn, int pausaOff, int contatore
// la variabile contatore definisce il numero di cicli di lampeggio
void lampeggia(int pausaOn, int pausaOff, int contatore)
{
for (int i = 0; i < contatore; i++) {
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausaOn); // delay LED ON
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausaOff); // delay LED OFF
}
}
che cosa gestisce il SELETTORE quando commuta dalla posizione di figura alla nuova posizione ?
spegne o mantiene spento il LED
accende o mantiene acceso il LED
Non esegue nessuna azione sul LED
comanda la funzione che poi permette al LED di lampeggiare
#define TEMPO1 250
#define TEMPO2 750
#define NUM_LAMPEGGI 5
#define SELETTORE 12
// chiave e la variabile che consente l'esecuzione della
// chiamata della funzione lampegga una sola volta
bool chiave = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(SELETTORE , INPUT_PULLUP);
Serial.begin (115200);
}
void loop() {
// chiamiamo la funzione lampeggia passando il valore
// specificato all'interno delle parentesi tonde
chiave=digitalRead(SELETTORE);
if (chiave == 0) {Serial.println (chiave);
digitalWrite(LED_BUILTIN,1);}
if (chiave == 1) {Serial.println (chiave);
lampeggia(TEMPO1, TEMPO2, NUM_LAMPEGGI);}
}
// blink LED una volta
// per far si che la funzione accetti tre parametri in input
// bisogna dichiarare il tipo per ogni parametro in ingresso
// nella funzione lampeggia: int pausaOn, int pausaOff, int contatore
// la variabile contatore definisce il numero di cicli di lampeggio
void lampeggia(int pausaOn, int pausaOff, int contatore)
{
for (int i = 0; i < contatore; i++) {
digitalWrite(LED_BUILTIN, HIGH); // accende il LED
delay(pausaOn); // delay LED ON
digitalWrite(LED_BUILTIN, LOW); // spegne il LED
delay(pausaOff); // delay LED OFF
}
}
che cosa gestisce il SELETTORE quando commuta dalla posizione di figura alla nuova posizione ?
spegne o mantiene spento il LED
accende o mantiene acceso il LED
Non esegue nessuna azione sul LED
comanda la funzione che poi permette al LED di lampeggiare
// C++ code
//
int maria = digitalRead(5);
int mario = digitalRead(6);
int gennaro = digitalRead(4);
#define no 8
#define si 9
int x=0;
int y=0;
void setup()
{
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(si, OUTPUT);
pinMode(no, OUTPUT);
Serial.begin(9600);
}
void loop()//
{
delay(10); // Delay a little bit to improve simulation performance
switch(x){
case 0:
Serial.println(" nessuno è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 1:
Serial.println(" 1 è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario ;
break;
case 2:
Serial.println(" 2 sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 3:
Serial.println(" tutti sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 5:
Serial.print("calcolo ");
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
}
}
Qual è il valore iniziale di x?
0
2
2
3
// C++ code
//
int maria = digitalRead(5);
int mario = digitalRead(6);
int gennaro = digitalRead(4);
#define no 8
#define si 9
int x=0;
int y=0;
void setup()
{
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(si, OUTPUT);
pinMode(no, OUTPUT);
Serial.begin(9600);
}
void loop()//
{
delay(10); // Delay a little bit to improve simulation performance
switch(x){
case 0:
Serial.println(" nessuno è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 1:
Serial.println(" 1 è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario ;
break;
case 2:
Serial.println(" 2 sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 3:
Serial.println(" tutti sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 5:
Serial.print("calcolo ");
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
}
}
Cosa rappresenta la variabile x nel codice?
Il numero totale di sensori attivi.
Lo stato di un sensore specifico.
La somma di tre variabili.
La frequenza di campionamento.
// C++ code
//
int maria = digitalRead(5);
int mario = digitalRead(6);
int gennaro = digitalRead(4);
#define no 8
#define si 9
int x=0;
int y=0;
void setup()
{
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(si, OUTPUT);
pinMode(no, OUTPUT);
Serial.begin(9600);
}
void loop()//
{
delay(10); // Delay a little bit to improve simulation performance
switch(x){
case 0:
Serial.println(" nessuno è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 1:
Serial.println(" 1 è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario ;
break;
case 2:
Serial.println(" 2 sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 3:
Serial.println(" tutti sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 5:
Serial.print("calcolo ");
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
}
}
Qual è lo scopo delle costanti no e si?
Definire i nomi dei sensori.
Impostare lo stato dei pin di output.
Calcolare la potenza del segnale.
Limitare la corrente dei LED.
// C++ code
//
int maria = digitalRead(5);
int mario = digitalRead(6);
int gennaro = digitalRead(4);
#define no 8
#define si 9
int x=0;
int y=0;
void setup()
{
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(si, OUTPUT);
pinMode(no, OUTPUT);
Serial.begin(9600);
}
void loop()//
{
delay(10); // Delay a little bit to improve simulation performance
switch(x){
case 0:
Serial.println(" nessuno è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 1:
Serial.println(" 1 è a favore");
digitalWrite(si,0);
digitalWrite(no,1);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario ;
break;
case 2:
Serial.println(" 2 sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 3:
Serial.println(" tutti sono a favore");
digitalWrite(si,1);
digitalWrite(no,0);
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
case 5:
Serial.print("calcolo ");
gennaro = digitalRead(4);
maria = digitalRead(5);
mario = digitalRead(6);
x=gennaro+maria+mario;
break;
}
}
Una delle possibili scelte dell'istruzione case è inutilizzata?
case 5
case 0
case 3
case 2
case 1
#define PULSANTE 2
#define LED 13
int stato = 0;
int tempo = 0;
int statoLed = LOW;
void setup ()
{
pinMode(LED,OUTPUT); //led uscita
pinMode (PULSANTE, INPUT_PULLUP);
}
void loop ()
{
switch (stato)
{
case 0:
if (digitalRead(PULSANTE) == LOW) // attendo pressione
{
statoLed = !statoLed; // inverto stato LED
digitalWrite(LED, statoLed);
stato = 1;
}
break;
case 1: // antirimbalzo
tempo ++;
if (tempo >= 50) stato = 2;
break;
case 2: // attendo rilascio
if (digitalRead(PULSANTE) == HIGH) stato = 0;
break;
}
delay (1);
}
Quando viene attivato il sistema di antirimbalzo?
Quando il pulsante viene premuto.
Quando il LED cambia stato.
Dopo un certo intervallo di tempo (50 millisecondi).
Quando il pulsante viene rilasciato.
#define PULSANTE 2
#define LED 13
int stato = 0;
int tempo = 0;
int statoLed = LOW;
void setup ()
{
pinMode(LED,OUTPUT); //led uscita
pinMode (PULSANTE, INPUT_PULLUP);
}
void loop ()
{
switch (stato)
{
case 0:
if (digitalRead(PULSANTE) == LOW) // attendo pressione
{
statoLed = !statoLed; // inverto stato LED
digitalWrite(LED, statoLed);
stato = 1;
}
break;
case 1: // antirimbalzo
tempo ++;
if (tempo >= 50) stato = 2;
break;
case 2: // attendo rilascio
if (digitalRead(PULSANTE) == HIGH) stato = 0;
break;
}
delay (1);
}
Qual è lo scopo della variabile tempo?
Monitorare lo stato del LED.
Monitorare il pulsante.
Misurare il tempo di pressione del pulsante.
Calcolare il tempo di pressione del pulsante.
#define PULSANTE 2
#define LED 13
int stato = 0;
int tempo = 0;
int statoLed = LOW;
void setup ()
{
pinMode(LED,OUTPUT); //led uscita
pinMode (PULSANTE, INPUT_PULLUP);
}
void loop ()
{
switch (stato)
{
case 0:
if (digitalRead(PULSANTE) == LOW) // attendo pressione
{
statoLed = !statoLed; // inverto stato LED
digitalWrite(LED, statoLed);
stato = 1;
}
break;
case 1: // antirimbalzo
tempo ++;
if (tempo >= 50) stato = 2;
break;
case 2: // attendo rilascio
if (digitalRead(PULSANTE) == HIGH) stato = 0;
break;
}
delay (1);
}
A cosa serve la definizione #define PULSANTE 2?
Assegna il numero 2 al pin digitale 13.
Definisce la costante PULSANTE associandola al pin digitale 2.
Imposta il pin digitale 2 come uscita.
Non fa nulla, è un commento.
#define PULSANTE 2
#define LED 13
int stato = 0;
int tempo = 0;
int statoLed = LOW;
void setup ()
{
pinMode(LED,OUTPUT); //led uscita
pinMode (PULSANTE, INPUT_PULLUP);
}
void loop ()
{
switch (stato)
{
case 0:
if (digitalRead(PULSANTE) == LOW) // attendo pressione
{
statoLed = !statoLed; // inverto stato LED
digitalWrite(LED, statoLed);
stato = 1;
}
break;
case 1: // antirimbalzo
tempo ++;
if (tempo >= 50) stato = 2;
break;
case 2: // attendo rilascio
if (digitalRead(PULSANTE) == HIGH) stato = 0;
break;
}
delay (1);
}
A cosa serve la definizione #define PULSANTE 2?
Assegna il numero 2 al pin digitale 13.
Definisce la costante PULSANTE associandola al pin digitale 2.
Imposta il pin digitale 2 come uscita.
Non fa nulla, è un commento.
// C++ code
//
#define ledR 13
#define ledG 12
#define ledV 11
#define SELE 10
int stato = 0;
void setup()
{
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledV, OUTPUT);
pinMode(SELE, INPUT_PULLUP);
}
void loop()
{
switch (stato) {
case 0:
if(digitalRead(SELE)==0){
digitalWrite(ledR,1);
delay(5000);
digitalWrite(ledR,0);
digitalWrite(ledG,1);
delay(3000);
digitalWrite(ledG,0);
digitalWrite(ledV,1);
delay(2000);
digitalWrite(ledV,0);}
if(digitalRead(SELE)==1){ stato=1;}
break;
case 1:
digitalWrite(ledR,0);
digitalWrite(ledV,0);
digitalWrite(ledG,1);
delay(1000);
digitalWrite(ledG,0);
delay(1000);
break;}
if(digitalRead(SELE)==0){ stato=0;}
}
Quale pin è utilizzato per leggere lo stato del pulsante (BISTABILE) ?
ledR
ledG
ledV
SELE
Studiare le stampe del monitor seriale dell'esempio di figura, dopo aver analizzato i due programmi, identificare e correggere il secondo programma affinchè nel monitor seriale appaia il valore di temperatura in gradi.
https://www.arduino.cc/reference/en/language/functions/math/map/
void loop()
{
sensorValue = analogRead(A0);
Serial.println(sensorValue);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
}
void loop()
{
sensorValue = analogRead(A0);
Serial.println(sensorValue);
sensorValue=map(sensorValue,20,-40,358,125);
Serial.println(sensorValue);
}
void loop()
{
sensorValue = analogRead(A0);
Serial.println(sensorValue);
sensorValue=map(sensorValue,358,20,-40,125);
Serial.println(sensorValue);
}
void loop()
{
sensorValue = analogRead(A0);
Serial.println(sensorValue);
sensorValue=map(sensorValue,20,358,40,125);
Serial.println(sensorValue);
}
Qual è la funzione principale del sensore collegato al pin A0?
Qual è la funzione principale del sensore collegato al pin A0?
A) Misurare la temperatura ambiente
B) Leggere un valore analogico
C) Controllare il LED integrato dell’Arduino
D) Generare segnali PWM
Come viene determinata la direzione di rotazione del motore in base al valore del sensore?
A) Se il valore del sensore è superiore a 512, il motore ruota in un verso, se inferiore nel verso opposto
B) Se il valore del sensore è inferiore a 512, il motore si ferma
C) Il motore ruota sempre nella stessa direzione indipendentemente dal valore del sensore.
D) La direzione del motore è casuale.
Spiegare il funzionamento del pin PULSANTE_PULLUP. (Selezionare tutte le risposte corrette, due risposte)
Suggerimento quando è presente il link utilizzatelo.
(a) Ha una resistenza interna di pull-up collegata a 5V.
(b) Premendo il pulsante, il LED collegato a LEDpullup si accende.
(c) Premendo il pulsante, il LED collegato a LEDpullup si spegne.
(d) Non necessita di una resistenza esterna per funzionare correttamente.
Quali pin sono configurati con la modalità INPUT_PULLUP nel tuo sketch?
A) PULSANTE_PULLUP e PULSANTE_inputPULLUP
B) PULSANTE_DOWN e SELETTORE
C) PULSANTE_PULLUP, PULSANTE_inputPULLUP e SELETTORE
D) Solo PULSANTE_inputPULLUP
Qual è la funzione del pin S1?
// C++ code
//
#define S1 3
#define B1 4
#define B2 5
#define B3 6
#define P1 2
#define TEMP_MIS A0
#define N_PEZZI_MAX 3 //anche il numero di pezzi è stato ridotto per esigenze di denug
#define TEMP_min 75
#define TEMP_max 110
#define TEMPO_FORNOon 150//il tempo è scelto piccolo per eseguire il debug del programma
int sensorValue = 0;
int stato=0;
int tempo=0;
int pezzi_lavorati=0;
void setup()
{
pinMode(P1, OUTPUT);
pinMode(7, OUTPUT);
pinMode(S1, INPUT_PULLUP);
pinMode(B1, INPUT);
pinMode(B2, INPUT);
pinMode(B3, INPUT);
Serial.begin(9600);
digitalWrite(7,0);
digitalWrite(2,0);
digitalWrite(8,0);
}
void loop ()
{
// for(int i=0; i<N_PEZZI_MAX; i++){ altra possibile strategia al posto del swuitch case
switch(stato){
case 0:
digitalWrite(7,0);
Serial.print(stato);
Serial.println(" stato=0 sto aspettando un comando ");
if(digitalRead(S1)==1){stato=0;digitalWrite(7,1);}else stato=10;
Serial.print(stato);
break;
case 1:
Serial.print(stato);
Serial.println(" stato=1 sto aspettando il pezzo successivo puoi caricare ");
controlloTEMP();
delay(20);
if (pezzi_lavorati<=N_PEZZI_MAX)stato=20;
else {stato=0;
pezzi_lavorati=0;
Serial.println("PRODUZIONE TERMINATA");
Serial.println("PREMERE S1 per avviare un nuovo ciclo");}
break;
case 10:
Serial.print("stato=10 sto aspettando la temperatura corretta");
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
if(sensorValue>=TEMP_min && sensorValue<=TEMP_max){
stato=20;}
Serial.print(stato);
break;
case 20:
Serial.print("stato=20 nastro non avviato ");
controlloTEMP();
if(digitalRead(B1)==1 && digitalRead(B2)==0 && digitalRead(B3)==0){
Serial.print(digitalRead(B1));
Serial.println(digitalRead(B2));
pezzi_lavorati++;
digitalWrite(2,1);
digitalWrite(8,0);
Serial.print("stato=20 nastro avviato ");
stato=30;}
Serial.print(stato);
break;
case 30:
Serial.print("stato=30 pezzo in ingresso al forno ");
controlloTEMP();
if(digitalRead(B1)==0 && digitalRead(B2)==1 && digitalRead(B3)==0){
digitalWrite(P1,0);
tempo=millis();
stato=31;
Serial.print(stato);
break;
case 31:
Serial.print(" sto aspettando il tempo definito ");
Serial.println(millis());Serial.print(tempo);Serial.print(" ");
if((millis()-tempo)>=TEMPO_FORNOon)stato=40;
else stato=stato;}
Serial.print(stato);
break;
case 40:
digitalWrite(P1,1);
if(digitalRead(B1)==0 && digitalRead(B2)==0 && digitalRead(B3)==1){
digitalWrite(P1,0);
digitalWrite(P1,0);
digitalWrite(8,0);
stato=1;}
break;
}
}
void controlloTEMP()
{
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
if(sensorValue>=TEMP_min && sensorValue<=TEMP_max){
stato=stato;
}
else stato=10;
}
void aspetta(int tempo_forno){
Serial.print(" sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=tempo_forno)stato=stato;
}
(a) Avvia il ciclo di produzione.
(b) Arresta il ciclo di produzione.
(c) Controlla la temperatura del forno
(d) Non è utilizzato nello sketch.
Qual è la funzione del pin B3?
// C++ code
//
#define S1 3
#define B1 4
#define B2 5
#define B3 6
#define P1 2
#define TEMP_MIS A0
#define N_PEZZI_MAX 3 //anche il numero di pezzi è stato ridotto per esigenze di denug
#define TEMP_min 75
#define TEMP_max 110
#define TEMPO_FORNOon 150//il tempo è scelto piccolo per eseguire il debug del programma
int sensorValue = 0;
int stato=0;
int tempo=0;
int pezzi_lavorati=0;
void setup()
{
pinMode(P1, OUTPUT);
pinMode(7, OUTPUT);
pinMode(S1, INPUT_PULLUP);
pinMode(B1, INPUT);
pinMode(B2, INPUT);
pinMode(B3, INPUT);
Serial.begin(9600);
digitalWrite(7,0);
digitalWrite(2,0);
digitalWrite(8,0);
}
void loop ()
{
// for(int i=0; i<N_PEZZI_MAX; i++){ altra possibile strategia al posto del swuitch case
switch(stato){
case 0:
digitalWrite(7,0);
Serial.print(stato);
Serial.println(" stato=0 sto aspettando un comando ");
if(digitalRead(S1)==1){stato=0;digitalWrite(7,1);}else stato=10;
Serial.print(stato);
break;
case 1:
Serial.print(stato);
Serial.println(" stato=1 sto aspettando il pezzo successivo puoi caricare ");
controlloTEMP();
delay(20);
if (pezzi_lavorati<=N_PEZZI_MAX)stato=20;
else {stato=0;
pezzi_lavorati=0;
Serial.println("PRODUZIONE TERMINATA");
Serial.println("PREMERE S1 per avviare un nuovo ciclo");}
break;
case 10:
Serial.print("stato=10 sto aspettando la temperatura corretta");
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
if(sensorValue>=TEMP_min && sensorValue<=TEMP_max){
stato=20;}
Serial.print(stato);
break;
case 20:
Serial.print("stato=20 nastro non avviato ");
controlloTEMP();
if(digitalRead(B1)==1 && digitalRead(B2)==0 && digitalRead(B3)==0){
Serial.print(digitalRead(B1));
Serial.println(digitalRead(B2));
pezzi_lavorati++;
digitalWrite(2,1);
digitalWrite(8,0);
Serial.print("stato=20 nastro avviato ");
stato=30;}
Serial.print(stato);
break;
case 30:
Serial.print("stato=30 pezzo in ingresso al forno ");
controlloTEMP();
if(digitalRead(B1)==0 && digitalRead(B2)==1 && digitalRead(B3)==0){
digitalWrite(P1,0);
tempo=millis();
stato=31;
Serial.print(stato);
break;
case 31:
Serial.print(" sto aspettando il tempo definito ");
Serial.println(millis());Serial.print(tempo);Serial.print(" ");
if((millis()-tempo)>=TEMPO_FORNOon)stato=40;
else stato=stato;}
Serial.print(stato);
break;
case 40:
digitalWrite(P1,1);
if(digitalRead(B1)==0 && digitalRead(B2)==0 && digitalRead(B3)==1){
digitalWrite(P1,0);
digitalWrite(P1,0);
digitalWrite(8,0);
stato=1;}
break;
}
}
void controlloTEMP()
{
sensorValue = analogRead(A0);
sensorValue=map(sensorValue,20,358,-40,125);
Serial.println(sensorValue);
if(sensorValue>=TEMP_min && sensorValue<=TEMP_max){
stato=stato;
}
else stato=10;
}
void aspetta(int tempo_forno){
Serial.print(" sto aspettando il tempo definito");
Serial.println(millis());
if((millis()-tempo)>=tempo_forno)stato=stato;
}
(a) Rileva la presenza di un pezzo all'inizio del nastro trasportatore.
(b) Rileva la presenza di un pezzo all'uscita del nastro trasportatore.
(c) Controlla la temperatura del forno.
(d) Indica se il pezzo è stato estratto dal forno.
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Fade in from min to max in increments of 5 points:
for (int i = 0; i <= 255; i += 5) {
analogWrite (ledPin, i);
delay(10);
}
// Fade out from max to min in increments of 5 points:
for (int i = 255; i >= 0; i -= 5) {
Serial.println(i);
analogWrite(ledPin, i);
delay(10);
}
}
Se si desidera aumentare la velocità della dissolvenza del LED, quale parametro si dovrebbe modificare?
A) Il valore di i in analogWrite(ledPin, i);
B) Il numero di cicli nel ciclo for.
C) Il valore di delay(10);
D) Il numero del pin in const int ledPin = 9;
Qual è lo scopo principale di questo sketch?
programma ancora da finire
A. Controllare un semaforo.
B. Contare il numero di persone che entrano in un luogo.
C. Simulare un gioco.
D. Misurare la temperatura.
E. Nessuna delle risposte è esatta
Cosa accade quando il pulsante di reset viene premuto e mantenuto premuto per almeno 2 secondi?
programma ancora da finire
A. Il conteggio delle persone viene incrementato
B. Il conteggio delle persone viene azzerato.
C. Il sistema si blocca.
D. Il sistema passa allo stato di calibrazione.
E. stampa sul monitor seriale il numero di volte che è stato premuto il pulsante
