Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int pResistor = A0;
- int red = 6;
- int yellow = 5;
- int green = 3;
- int intervalSec = 3; // TODO
- int previousMillis;
- int currentMillis;
- int prevPhoResVal;
- int currPhoResVal;
- int prevPhoResTime;
- int currPhoResTime;
- double addVal;
- void setup()
- {
- // put your setup code here, to run once:
- Serial.begin(9600);
- pinMode(red, OUTPUT);
- pinMode(yellow, OUTPUT);
- pinMode(green, OUTPUT);
- pinMode(pResistor, INPUT);
- prevPhoResVal = analogRead(pResistor);
- prevPhoResTime = millis();
- }
- void loop()
- {
- changeLights();
- }
- void changeLights(){
- previousMillis = millis();
- for(currentMillis = millis() ; currentMillis - previousMillis < 4000 ; currentMillis = millis())
- {
- // green on
- analogWrite(green, photoresistorRatio());
- analogWrite(yellow, LOW);
- analogWrite(red, LOW);
- //delay(2);
- }
- previousMillis = millis();
- for(currentMillis = millis() ; currentMillis - previousMillis < 1000 ; currentMillis = millis())
- {
- // yellow on
- analogWrite(yellow, photoresistorRatio());
- analogWrite(green, LOW);
- analogWrite(red, LOW);
- //delay(2);
- }
- previousMillis = millis();
- for(currentMillis = millis() ; currentMillis - previousMillis < 6000 ; currentMillis = millis())
- {
- // red on
- analogWrite(red, photoresistorRatio());
- analogWrite(green, LOW);
- analogWrite(yellow, LOW);
- //delay(2);
- }
- previousMillis = millis();
- for(currentMillis = millis() ; currentMillis - previousMillis < 1000 ; currentMillis = millis())
- {
- // red & yellow on
- analogWrite(yellow, photoresistorRatio());
- analogWrite(red, photoresistorRatio());
- analogWrite(green, LOW);
- //delay(2);
- }
- }
- // map the value from the photoresistor to a
- // matching value of the output.
- int photoresistorRatio()
- {
- currPhoResVal = analogRead(pResistor);
- currPhoResTime = millis();
- double diffVal = abs(prevPhoResVal - currPhoResVal);
- double interval = double(currPhoResTime - prevPhoResTime) / 3000;
- addVal = diffVal * interval;
- double newVal = prevPhoResVal;
- if(currPhoResVal > prevPhoResVal) {
- newVal = prevPhoResVal + addVal;
- }
- else if (currPhoResVal < prevPhoResVal) {
- newVal = prevPhoResVal - addVal;
- }
- else {
- newVal += prevPhoResVal;
- }
- Serial.println(newVal);
- int mapVal = map(newVal, 0, 1023, 255/2, 255);
- delay(200);
- prevPhoResVal = currPhoResVal;
- prevPhoResTime = currPhoResTime;
- return mapVal;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement