
LEZIONE n° 3 – SENSORI
La lezione è sui sensori e sulla loro gestione. Si useranno i sensori (LED) in modo evoluto rispetto alla lezione precedente.
Per provare a fare le modifiche proposte copiare il listato (colorato in rosso) ed incollarlo in un editor di solo testo [Notepad ad esempio]
listato programma esempio numero 3:
ACCENDERE DUE LED SECONDO IL VALORE DI DUE PIN DIGITALI
/*
Button
Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 2.
The circuit:
* LED attached from pin 2 and 8 to ground
* pushbutton attached to pin 5 and 6 from +5V
*/
// set pin numbers:
const int buttonPin1 = 5; // the number of the pushbutton pin
const int buttonPin2 = 6; // the number of the pushbutton pin
const int ledPin1 = 2; // the number of the LED pin
const int ledPin2 = 8; // the number of the LED pin
// variables will change:
int buttonState1 = 0; // variable for reading the pushbutton status
int buttonState2 = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop(){
// read the state of the pushbutton value:
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState1 == LOW || buttonState2 == LOW ) {
// turn LED on:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}
if (buttonState1 == HIGH ) {
// turn LED on:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
}
if (buttonState2 == HIGH ) {
// turn LED on:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
}
if ((buttonState1 == HIGH)&&(buttonState2 == HIGH )) {
// turn LED on:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
}
}
Modifiche proposte:
- invece di accendere il LED FARLO LAMPEGGIARE PER DUE VOLTE CONSECUTIVE
- CAMBIARE il modo di lampeggiare
listato programma esempio numero 4:
ACCENDERE TRE LED SECONDO IL VALORE DI UN PIN ANALOGICO
/*
Button
Turns on and off a light emitting diode(LED) connected to digital
pin 2/8/9, secondo value of an analog pin A1.
*/
// set pin numbers:
int sensorPin = A1;
int sensorValue = 0; // variable to store the value coming from the sensor
const int ledPin1 = 2; // the number of the LED pin
const int ledPin2 = 8; // the number of the LED pin
const int ledPin3 = 9; // the number of the LED pin
// variables will change:
void setup() {
Serial.begin(9600);
// initialize the LED pin as an output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
// initialize the pushbutton pin as an input:
}
void loop(){
// read the state of the pushbutton value:
sensorValue = analogRead(sensorPin);
// print the results to the serial monitor:
Serial.print(“sensor = ” );
Serial.print(sensorValue);
Serial.print(“\n “);
// Serial.println(outputValue);
// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(10);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ((100 < sensorValue)&&( sensorValue < 300) ) {
// turn LED on:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
if ((300 < sensorValue)&&( sensorValue < 550) ) {
// turn LED on:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
if ((550 < sensorValue)&&( sensorValue < 650) ) {
// turn LED on:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
}
if ((650 < sensorValue)&&( sensorValue < 850) ) {
// turn LED on:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
}
if ((850 < sensorValue)&&( sensorValue < 1050) ) {
// turn LED on:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
}
}
Modifiche proposte:
- CAMBIARE i valori da segnalare in condizioni diverse
- CAMBIARE il modo di lampeggiare
di seguito le slide della lezione
(54)