Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Jung Min Yean
- * 04/09/19
- * Learning how used the analog Read and Write
- * Calibrating your sensor
- * debouncing your button
- * Coding for 7 Colors on RGB
- * Using SwitchCase
- */
- const int Button = 2;
- const int LedPin1 = 9;
- const int LedPin2 = 10;
- const int LedPin3 = 11;
- const int PhotoPin = A1;
- const int LedPinRed = 3;
- const int LedPinGreen = 5;
- const int LedPinBlue = 6;
- int PhotoVal=0;
- unsigned long timeStart=0;
- int Max=0;
- int Min =1000;
- int randy;
- boolean currentVal;
- boolean lastVal;
- void setup()
- {
- pinMode(LedPin1, OUTPUT);
- pinMode(LedPin2, OUTPUT);
- pinMode(LedPin3, OUTPUT);
- pinMode(PhotoPin, INPUT);
- pinMode(LedPinRed, OUTPUT);
- pinMode(LedPinGreen, OUTPUT);
- pinMode(LedPinBlue, OUTPUT);
- Serial.begin(9600);
- digitalWrite(LedPin1, HIGH);
- delay(100);
- digitalWrite(LedPin1, LOW);
- calibrate();
- }
- boolean debounce(boolean last)
- {
- boolean current = digitalRead(Button);
- if (last != current)
- {
- delay(5);
- current = digitalRead(Button);
- Serial.println(current);
- }
- return current;
- }
- void calibrate()
- {
- Max = 0;
- Min = 1000;
- analogWrite(LedPin1,200);
- analogWrite(LedPin2, 0);
- analogWrite(LedPin3,0);
- delay(200);
- analogWrite(LedPin1, 0);
- analogWrite(LedPin2, 0);
- analogWrite(LedPin3,0);
- timeStart = millis();
- while (millis() -timeStart <= 5000)
- {
- delay(5);
- PhotoVal= analogRead(PhotoPin);
- Serial.println(PhotoVal);
- if(PhotoVal > Max)
- {
- Max = PhotoVal;
- }
- if(PhotoVal < Min)
- {
- Min = PhotoVal;
- }
- }
- Serial.print("The Max value is ");
- Serial.println(Max);
- Serial.print("The Min value is ");
- Serial.println(Min);
- }
- void loop()
- {
- currentVal = debounce(lastVal);
- if (lastVal == LOW && currentVal == HIGH) // Checks if the button has been pressed
- {
- randy = random(1,8);
- calibrate();
- }
- PhotoVal= analogRead(PhotoPin);
- int MapVal = map(PhotoVal,Min,Max,100,0) ;
- MapVal = constrain(MapVal, 0,100);
- double percent = MapVal/100.0;
- Serial.println(MapVal);
- analogWrite(LedPin1, MapVal);
- analogWrite(LedPin2, MapVal);
- analogWrite(LedPin3, MapVal);
- switch(randy)
- {
- case 1:
- analogWrite(LedPinRed, 255*percent);
- analogWrite(LedPinGreen, 255*percent);
- analogWrite(LedPinBlue, 255*percent);
- break;
- case 2:
- analogWrite(LedPinRed,255*percent);
- analogWrite(LedPinGreen, 0);
- analogWrite(LedPinBlue, 0);
- break;
- case 3:
- analogWrite(LedPinRed,255*percent);
- analogWrite(LedPinGreen, 255*percent);
- analogWrite(LedPinBlue, 0);
- break;
- case 4:
- analogWrite(LedPinRed, 153*percent);
- analogWrite(LedPinGreen, 255*percent);
- analogWrite(LedPinBlue, 153*percent);
- break;
- case 5:
- analogWrite(LedPinRed, 102*percent);
- analogWrite(LedPinGreen, 102*percent);
- analogWrite(LedPinBlue, 255*percent);
- break;
- case 6:
- analogWrite(LedPinRed,255*percent);
- analogWrite(LedPinGreen, 0);
- analogWrite(LedPinBlue, 255*percent);
- break;
- case 7:
- analogWrite(LedPinRed,255*percent);
- analogWrite(LedPinGreen, 102*percent);
- analogWrite(LedPinBlue, 178*percent);
- break;
- case 8:
- analogWrite(LedPinRed,0);
- analogWrite(LedPinGreen, 0);
- analogWrite(LedPinBlue, 0);
- break;
- }
- lastVal = currentVal;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement