From: Andrea Manni Date: Thu, 23 Apr 2015 15:37:57 +0000 (+0200) Subject: piezo X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=1ec9a5af55ae42ae4678fbdceaa6ae006fb66ab0;p=sketchbook_andrea piezo --- diff --git a/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino b/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino index e74c7b3..dcfc5b7 100644 --- a/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino +++ b/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino @@ -18,25 +18,55 @@ This example code is in the public domain. */ +// These constants won't change: +const int sensorPin = A0; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + +// variables: +int sensorValue = 0; // the sensor value +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value void setup() { // initialize serial communications (for debugging only): Serial.begin(9600); + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); + + // calibrate during the first five seconds + while (millis() < 5000) { + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } + } + + // signal the end of the calibration period + digitalWrite(13, LOW); } void loop() { // read the sensor: - int sensorReading = analogRead(A0); + int sensorReading = analogRead(sensorPin); // print the sensor reading so you know its range Serial.println(sensorReading); // map the analog input range (in this case, 400 - 1000 from the photoresistor) // to the output pitch range (120 - 1500Hz) // change the minimum and maximum input numbers below // depending on the range your sensor's giving: - int thisPitch = map(sensorReading, 400, 1000, 120, 1500); + int thisPitch = map(sensorReading, sensorMin, sensorMax, 220, 3500); // play the pitch: - tone(9, thisPitch, 10); + if (sensorReading < sensorMax -50) { + tone(ledPin, thisPitch, 10); + } delay(1); // delay in between reads for stability } diff --git a/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino b/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino index 5ae3099..9ceda24 100644 --- a/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino +++ b/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino @@ -19,6 +19,11 @@ This example code is in the public domain. */ +// These constants won't change: +const int sensorPin = A0; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + + void setup() { // initialize serial communications (for debugging only): Serial.begin(9600); @@ -26,28 +31,105 @@ void setup() { void loop() { // read the sensor: - int sensorReading = analogRead(A0); + int sensorReading = analogRead(sensorPin); // print the sensor reading so you know its range Serial.println(sensorReading); // map the analog input range (in this case, 400 - 1000 from the photoresistor) // to the output pitch range (120 - 1500Hz) // change the minimum and maximum input numbers below // depending on the range your sensor's giving: - int thisPitch = map(sensorReading, 400, 1000, 120, 1500); + int thisPitch = map(sensorReading, sensorMin, sensorMax, 220, 3500); // play the pitch: - tone(9, thisPitch, 10); + tone(ledPin, thisPitch, 10); delay(1); // delay in between reads for stability } /* Domande: 1. Modificare l'estensione del range di frequenza del piezo tra i valori 20hz e 20.000hz. - -2. Modificare lo script in modo che vengano emessi suoni solo quando +2. Inserire l'auto calibrazione +3. Modificare lo script in modo che vengano emessi suoni solo quando una mano offusca leggermente la luce (il piezo non deve suonare se non c'e' un operatore a interagire con la fotoresistenza). +Soluzioni in fondo. + + + + + + + + + + + + + + + + + + + + + + + + +Soluzioni: +// These constants won't change: +const int sensorPin = A0; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + +// variables: +int sensorValue = 0; // the sensor value +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value + +void setup() { + // initialize serial communications (for debugging only): + Serial.begin(9600); + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); + + // calibrate during the first five seconds + while (millis() < 5000) { + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } + } + + // signal the end of the calibration period + digitalWrite(13, LOW); +} + +void loop() { + // read the sensor: + int sensorReading = analogRead(sensorPin); + // print the sensor reading so you know its range + Serial.println(sensorReading); + // map the analog input range (in this case, 400 - 1000 from the photoresistor) + // to the output pitch range (120 - 1500Hz) + // change the minimum and maximum input numbers below + // depending on the range your sensor's giving: + int thisPitch = map(sensorReading, sensorMin, sensorMax, 220, 3500); + + // play the pitch: + if (sensorReading < sensorMax -50) { + tone(ledPin, thisPitch, 10); + } + delay(1); // delay in between reads for stability +} */ diff --git a/piezo/piezo_2_keyboard/pitches.h b/piezo/piezo_2_keyboard/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/piezo/piezo_2_keyboard/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/piezo/piezo_4_1_james_bond/piezo_4_1_james_bond.ino b/piezo/piezo_4_1_james_bond/piezo_4_1_james_bond.ino new file mode 100644 index 0000000..51ff74c --- /dev/null +++ b/piezo/piezo_4_1_james_bond/piezo_4_1_james_bond.ino @@ -0,0 +1,53 @@ +// From: http://garagelab.com/profiles/blogs/how-to-use-tone-function-arduino-playing-the-james-bond-theme + +#include "pitches.h" +#define NO_SOUND 0 // make the rests in music + +//array of notes +int melody[] = { + /*NOTE_G4,NOTE_G4,NO_SOUND,NOTE_G4,NOTE_G4,NO_SOUND,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4, + NOTE_B3,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_CS4,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_B3,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_CS4,NOTE_G3,NOTE_C4,NOTE_G3, + NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4, + NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,*/ + //Introduction + NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4, + NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4, + NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4, + NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4, + NOTE_DS5,NOTE_D5,NOTE_B4,NOTE_A4,NOTE_B4, + NOTE_E4,NOTE_G4,NOTE_DS5,NOTE_D5,NOTE_G4,NOTE_B4, + NOTE_B4,NOTE_FS5,NOTE_F5,NOTE_B4,NOTE_D5,NOTE_AS5, + NOTE_A5,NOTE_F5,NOTE_A5,NOTE_DS6,NOTE_D6,NO_SOUND +}; + +// note duration: 1 = whole note, 2 = half note, 4 = quarter note, 8 = eighth note, etc. +int noteDurations[] = { + /*8,8,2,8,8,2,16,8,16,8,8, + 2,4,2,4,2,4,2,4,2,4,2,4,2,4,2,4, + 8,16,16,8,4,8,8,8, + 8,16,16,8,4,8,8,8,*/ + 8,16,16,8,4,8,8,8, + 8,16,16,8,4,8,8,8, + 8,16,16,8,4,8,8,8, + 8,16,16,8,4,8,8,8, + 8,2,8,8,1, + 8,4,8,4,8,8, + 8,8,4,8,4,8, + 4,8,4,8,3 +}; + +int pace = 1450; // change pace of music("speedy") +void setup() { + for (int Note = 0; Note <54; Note++) {//counter of Notes (54 limit the array) + int duration = pace/noteDurations[Note];//Adjust duration with the pace of music + tone(9, melody[Note],duration); //Play note + +// to distinguish the notes, set a minimum time between them. + delay(duration*1.2); + } +} + +void loop() { + //to repeat song, push reset button. +} +//End of Sketch diff --git a/piezo/piezo_4_1_james_bond/pitches.h b/piezo/piezo_4_1_james_bond/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/piezo/piezo_4_1_james_bond/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/programming/functions/argomenti_2/argomenti_2.ino b/programming/functions/argomenti_2/argomenti_2.ino new file mode 100644 index 0000000..9be5904 --- /dev/null +++ b/programming/functions/argomenti_2/argomenti_2.ino @@ -0,0 +1,23 @@ +void setup(){ + Serial.begin(9600); +} + +void loop() { +int latoA = 4; +int latoB = 3 ; + +Serial.print("Area rettangolo = "); +Serial.println(calcolaArea(latoA, latoB)); + + +Serial.flush(); +exit(0); +} + +// Funzioni + +int calcolaArea(int a, int b){ + int area = a * b ; + return area; +} + diff --git a/programming/functions/scope_1/scope_1.ino b/programming/functions/scope_1/scope_1.ino new file mode 100644 index 0000000..ae93e8f --- /dev/null +++ b/programming/functions/scope_1/scope_1.ino @@ -0,0 +1,26 @@ + +boolean sposato = 1 ; +void setup(){ + Serial.begin(9600); +} + +void loop() { +Serial.print("In standard mode sposato = "); +Serial.println(sposato); + +Serial.print("In vacanza mode sposato = "); +Serial.println(inVacanza(sposato)); + +Serial.print("Tornato a casa sposato = "); +Serial.println(sposato); +Serial.flush(); +exit(0); +} + +// Funzioni + +boolean inVacanza(boolean sposato){ + sposato = 0 ; + return sposato; +} +