color led;
-
void setup()
{
for (byte i = 0; i < 4; i++) {
}
}
-
void loop()
{
analogWrite(pin[0], led.red);
byte red;
};
-ledRGB led {0,255,255,9,10,11};
+ledRGB led {9,10,11,0,255,255};
-
-
void setup()
{
- pinMode(led.Pin, OUTPUT);
- pinMode(led.Pin, OUTPUT);
- pinMode(led.Pin, OUTPUT);
+ pinMode(led.rPin, OUTPUT);
+ pinMode(led.gPin, OUTPUT);
+ pinMode(led.bPin, OUTPUT);
}
void loop()
/* Knight Rider 2
* --------------
- *
+ *
* Array e uso dei cicli iterativi.
*
- Schema semplificato:
+ Schema semplificato:
- http://lab.piffa.net/schemi/8_led_single_res_bb.png
- http://lab.piffa.net/schemi/8_led_single_res_schem.png
*/
int pinArray[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int timer = 100;
-void setup(){
+void setup() {
// we make all the declarations at once
- for (int count=0;count<9;count++) {
+ for (int count = 0; count < 9; count++) {
pinMode(pinArray[count], OUTPUT);
}
}
void loop() {
- for (int count=0;count<8;count++) { // 8 e' un numero magico
- digitalWrite(pinArray[count], HIGH);
- delay(timer);
- digitalWrite(pinArray[count], LOW);
- delay(timer);
+ for (int count = 0; count < 8; count++) { // 8 e' un numero magico
+ digitalWrite(pinArray[count], HIGH);
+ delay(timer);
+ digitalWrite(pinArray[count], LOW);
+ delay(timer);
}
-// Ciclo inverso: dall'alto in basso
- for (int count=8;count>=0;count--) {
- digitalWrite(pinArray[count], HIGH);
- delay(timer);
- digitalWrite(pinArray[count], LOW);
- delay(timer);
+ // Ciclo inverso: dall'alto in basso
+ for (int count = 8; count >= 0; count--) {
+ digitalWrite(pinArray[count], HIGH);
+ delay(timer);
+ digitalWrite(pinArray[count], LOW);
+ delay(timer);
}
}
/* Domande:
-
- 1. Come posso fare per saltare un elemento del loop?
- 2. Come posso fare per uscire completamente dal loop?
+
+ 1. Come posso fare per saltare un elemento del loop?
+ 2. Come posso fare per uscire completamente dal loop?
3. 8 e' un numero magico: come posso evitarlo?
.
.
.
.
-Soluzioni:
+Soluzioni:
1. utilizzare continue
2. utilizzare break
3. Utilizzare un variabile sarebbe gia' un inizio, ancora meglio estrarre il
valore tramite la funzione sizeof().
-Links:
+Links:
- http://www.tutorialspoint.com/cprogramming/c_continue_statement.htm
- https://www.arduino.cc/en/Reference/Sizeof
*/
/*
For Loop Iteration
-
+
Demonstrates the use of a for() loop.
Lights multiple LEDs in sequence, then in reverse.
-
+
The circuit:
* LEDs from pins 2 through 9 to ground
-
+
Schemi:
- http://lab.piffa.net/schemi/8_led_single_res_bb.png
- http://lab.piffa.net/schemi/8_led_single_res_schem.png
-
+
http://www.arduino.cc/en/Tutorial/ForLoop
*/
byte ledPins[8] = { // Domanda: cosa succede se uso int?
- 2,3,4,5,6,7,8,9}
-; //Array
+ 2, 3, 4, 5, 6, 7, 8, 9
+ } ; //Array
int timer = 100; // Pausa per far brillare i LED
void setup() {
for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
Serial.print("Inizializzato pin n. ");
- Serial.println( thisPin);
+ Serial.println(thisPin);
}
Serial.print("Dimesione array: ");
Serial.print("Accensione pin n. ");
Serial.println(thisPin);
// turn the pin on:
- digitalWrite(ledPins[thisPin], HIGH);
- delay(timer);
+ digitalWrite(ledPins[thisPin], HIGH);
+ delay(timer);
// turn the pin off:
- digitalWrite(ledPins[thisPin], LOW);
+ digitalWrite(ledPins[thisPin], LOW);
// Debug
}
// loop from the highest pin to the lowest:
- for (int thisPin = sizeof(ledPins) -1 ; thisPin > 0; thisPin--) {
+ for (int thisPin = sizeof(ledPins) - 1 ; thisPin > 0; thisPin--) {
Serial.print("Accensione pin n. "); // Gli array sono indicizzati da 0
Serial.println(thisPin);
digitalWrite(ledPins[thisPin], HIGH);
*/
byte ledPins[8] = { // Domanda: cosa succede se uso int?
- 2,3,4,5,6,7,8,9}
-; //Array
+ 2,3,4,5,6,7,8,9
+ }; //Array
int timer = 100; // Pausa per far brillare i LED
int randNumber ;
Serial.print("Dimesione array: ");
Serial.println(sizeof(ledPins));
+
randomSeed(analogRead(0)); // Rilevazione di un valore esterno
// per scegliere il primo elemento del pseudorandom generators
}
void loop() {
- // print a random number from 0 to 8
+ // print a random number from 0 to 7
randNumber = random(8);
// turn the pin on:
Serial.print("Accensione pin n. ");
// Esegue un pattern con i led
Serial.println(">>> Rainbow! <<<");
+ // loop from the lowest pin to the highest:
for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer / 2);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
- // Debug
-
}
// loop from the highest pin to the lowest:
--- /dev/null
+/* Knight Rider 2
+ * --------------
+ *
+ * Array e uso dei cicli iterativi.
+ *
+
+
+ Schema semplificato:
+ - http://lab.piffa.net/schemi/8_led_single_res_bb.png
+ - http://lab.piffa.net/schemi/8_led_single_res_schem.png
+ */
+
+int pinArray[8] = {2, 3, 4, 5, 6, 7, 8, 9};
+int timer = 100;
+
+void setup() {
+ // we make all the declarations at once
+ for (int count = 0; count < 9; count++) {
+ pinMode(pinArray[count], OUTPUT);
+ }
+}
+
+void loop() {
+ for (int count = 0; count < 8; count++) { // 8 e' un numero magico
+ digitalWrite(pinArray[count], HIGH);
+ delay(timer);
+ digitalWrite(pinArray[count], LOW);
+ delay(timer);
+ }
+
+ // Ciclo inverso: dall'alto in basso
+ for (int count = 8; count >= 0; count--) {
+ digitalWrite(pinArray[count], HIGH);
+ delay(timer);
+ digitalWrite(pinArray[count], LOW);
+ delay(timer);
+ }
+}
+
+/* Domande:
+
+ 1. Come posso fare per saltare un elemento del loop?
+ 2. Come posso fare per uscire completamente dal loop?
+ 3. 8 e' un numero magico: come posso evitarlo?
+
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+Soluzioni:
+ 1. utilizzare continue
+ 2. utilizzare break
+ 3. Utilizzare un variabile sarebbe gia' un inizio, ancora meglio estrarre il
+ valore tramite la funzione sizeof().
+Links:
+- http://www.tutorialspoint.com/cprogramming/c_continue_statement.htm
+- https://www.arduino.cc/en/Reference/Sizeof
+*/
+
+
--- /dev/null
+/*
+ RGB Object
+
+ Un oggetto puo' contenere tutte le proprieta' di un elemento
+ assieme ai metodi (le funzioni) che lo caratterizzano.
+
+ In aggiunta il constructor e' una funzione richiamata al momento
+ di instanziare l'oggetto che puo' essere usata per attivare PIN,
+ assegnare variabili.
+
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+class RGBLed {
+ // Classe rappresentativa di un LED RGB
+
+ // Private properties, le proprieta' sono private per default
+ byte redPin ;
+ byte greenPin ;
+ byte bluePin ;
+
+ public:
+ // Constructor: come viene instanziato un oggetto facente parte della classe
+ RGBLed(byte pinR, byte pinG, byte pinB)
+ {
+ // Carichiamo i valori dei PIN dentro alle proprieta'
+ redPin = pinR ;
+ greenPin = pinG ;
+ bluePin = pinB ;
+
+ // Equivalente del Setup() per inizializzare i PIN
+ pinMode(redPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ }
+
+ void Arrossa () {
+ // Metodo = funzione dell'oggetto
+ // Imposta il colore di un LED RGB a rosso
+
+ analogWrite(redPin, 0);
+ analogWrite(greenPin, 255);
+ analogWrite(bluePin, 255);
+ }
+
+ void SetColor (byte r, byte g, byte b) {
+ // Imposta il colore di un LED RGB
+
+ analogWrite(redPin, r);
+ analogWrite(greenPin, g);
+ analogWrite(bluePin, b);
+ }
+};
+
+// Instanziamo un LED
+RGBLed led(11, 10, 9);
+/* L'oggetto viene istanziato qui e non nella funzione di setup()
+ perche' altrimenti la sua esistenza sarebbe legata solo
+ al contesto (scope) del setup(), non sarebbe disponibile nel loop()
+ */
+
+void setup() {
+ // I PIN mode vengono settati dal constructor
+}
+
+void loop() {
+ led.Arrossa();
+ delay(1000);
+ led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
+ delay(1000);
+}
+
--- /dev/null
+/*
+ struct
+
+ Struct e' un tipo struttura di dati non omogenea,
+ puo' contenere tipi di dati diversi a differenza di un array.
+
+ Possiamo quindi raggruppare diverse proprieta' di un oggetto
+ sotto lo stesso identificatore.
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+
+struct lampeggino {
+ byte pin ;
+ long pausa;
+ boolean stato;
+ char feedback[20];
+} ;
+
+
+// instanziamo il lampeggino
+lampeggino rosso { 13, 1000, 0, ">> Led Rosso <<"};
+
+void setup()
+{
+ pinMode(rosso.pin, OUTPUT);
+ Serial.begin(9600);
+}
+
+void loop()
+{
+ // Facciamo un lampeggiatore
+ digitalWrite(rosso.pin,rosso.stato);
+ Serial.println(rosso.feedback);
+ rosso.stato = !rosso.stato ;
+ delay(rosso.pausa);
+}
+