From: Andrea Manni Date: Mon, 4 Apr 2016 16:52:07 +0000 (+0200) Subject: piezo X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=commitdiff_plain;h=eb5c8dbc3398a920a49419896f3ac7a801495619 piezo --- diff --git a/piezo/README b/piezo/README index 4c3877f..ed76355 100644 --- a/piezo/README +++ b/piezo/README @@ -1,3 +1,3 @@ -There are 4/5 nice sketches bundled with arduino: +There are 4/5 nice sketches bundled with Arduino IDE as examples: -> Digital : tone* -> Sensors: knock diff --git a/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino b/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino index 671f539..c609b29 100644 --- a/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino +++ b/piezo/piezo_1_tonePitchFollower/piezo_1_tonePitchFollower.ino @@ -53,85 +53,4 @@ tra i valori 20hz e 20.000hz. 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_1_tonePitchFollower_final/piezo_1_tonePitchFollower_final.ino b/piezo/piezo_1_tonePitchFollower_final/piezo_1_tonePitchFollower_final.ino new file mode 100644 index 0000000..bcc9290 --- /dev/null +++ b/piezo/piezo_1_tonePitchFollower_final/piezo_1_tonePitchFollower_final.ino @@ -0,0 +1,81 @@ +/* + Pitch follower + + Emette un suono in base all'inuput di una fotoresistenza. + Con autocalibrazione e limite minimo di attivazione + + + circuit: + * 8-ohm speaker on digital pin 8 + * photoresistor on analog 0 to 5V + * 4.7K resistor on analog 0 to ground + + created 21 Jan 2010 + modified 31 May 2012 + by Tom Igoe, with suggestion from Michael Flynn + 2015 by eaman + +This example code is in the public domain. + +- http://www.dummies.com/how-to/content/how-to-make-an-instrument-with-the-arduino.html +- https://www.arduino.cc/en/Tutorial/tonePitchFollower + + */ + + +// 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: +// Calibration +int sensorValue = 0; // the sensor value +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value + +// Runtime vars +int sensorReading ; // Analog value +int thisPitch ; // Note to play + +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: + 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: + 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 +}