Hej, jag håller på att ta fram lite rekvisita och skall skapa en spökmätare. Min tanke är att kombinera teremin projektet från starterkitet med att samtidigt som LDR styr den lille piezon så skall den kontrollera en RGB lampa att lysa i olika färger. Jag får det helt inte att fungera, och det beror säkert enbart på att jag inte har nån aning om vad jag gör. Jag har modiferat en kod som funkar för sig för att styra RGBn som jag sedan försökt inkorporera i koden för tereminen. Men där åker jag på patrull och får det inte att fungera.
Tanken är alltså att skapa något slags mätinstrument en kan vifta eller mäta "spökaktivitet" med i ett rum osv. Min tanke är att det är bäst med ljus som mätmetod. Men äger också en IR-sensor ifall det vore en bättre idé.
Om nån har lust att hjälpa mig med det nedan så vore det välkommet.
Vill någon även förbättra idéen och hjälpa mig utveckla den än mer är det mer än välkommet, jag bjur på en öl eller nått.
Det är inte för ett komersiellt syfte.
/*
Arduino Starter Kit example
Project 6 - Light Theremin
This sketch is written to accompany Project 6 in the
Arduino Starter Kit
Parts required:
photoresistor
10 kilohm resistor
piezo
Created 13 September 2012
by Scott Fitzgerald
http://arduino.cc/starterKit
This example code is part of the public domain
*/
// variable to hold sensor value
int sensorValue;
// variable to calibrate low value
int sensorLow = 1023;
// variable to calibrate high value
int sensorHigh = 0;
// LED pin
const int ledPin = 13;
int LEDRed = 9;
int LEDGreen = 10;
int LEDBlue = 11;
int sensePin = 0;
int val;
void setup() {
// Make the LED pin an output and turn it on
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
void setup(){
pinMode(LEDRed, OUTPUT);
pinMode(LEDGreen, OUTPUT);
pinMode(LEDBlue, OUTPUT);
pinMode(sensePin, INPUT);
Serial.begin(9600);
// calibrate for the first five seconds after program runs
while (millis() < 5000) {
// record the maximum sensor value
sensorValue = analogRead(A0);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
// record the minimum sensor value
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
// turn the LED off, signaling the end of the calibration period
digitalWrite(ledPin, LOW);
}
void loop() {
val = analogRead(sensePin);
Serial.println(val);
if(val < 10){
analogWrite(LEDRed, 0);
analogWrite(LEDBlue,0);
analogWrite(LEDGreen,0);
}
else if (val<100) {
analogWrite(LEDRed,0);
analogWrite(LEDBlue,128);
analogWrite(LEDGreen,128);
} else if (val<200) {
analogWrite(LEDRed,map(val,100,200,0,128));
analogWrite(LEDBlue,map(val,100,200,128,0));
analogWrite(LEDGreen,128);
} else if (val<300) {
analogWrite(LEDRed,128);
analogWrite(LEDBlue,0);
analogWrite(LEDGreen,128);
} else if (val<400) {
analogWrite(LEDRed,128);
analogWrite(LEDBlue,map(val,200,400,0,128));
analogWrite(LEDGreen,map(val,200,400,128,0));
} else if (val<500) {
analogWrite(LEDRed,128);
analogWrite(LEDBlue,128);
analogWrite(LEDGreen,0);
} else if (val<800) {
analogWrite(LEDRed,map(val,400,800,128,0));
analogWrite(LEDBlue,128);
analogWrite(LEDGreen,map(val,800,400,0,128));
}{
//read the input from A0 and store it in a variable
sensorValue = analogRead(A0);
// map the sensor values to a wide range of pitches
int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
// play the tone for 20 ms on pin 8
tone(8, pitch, 20);
// wait for a moment
delay(10);
}