awinograd

Lab 5 - Etch-a-sketch

May 11th, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <nokia_5110_lcd.h>
  2.  
  3. #define MODE_SWITCH 5
  4. #define BLINK_BUTTON 6
  5. #define CLEAR_BUTTON 7
  6.  
  7. #define XPIN A0
  8. #define YPIN A1
  9. const double XCON = .082;
  10. const double YCON = .046;
  11.  
  12. #define WIDTH 83
  13. #define HEIGHT 47
  14.  
  15. volatile int mode = PIXEL_ON;
  16. volatile boolean blinkFlag = false;
  17.  
  18. //LCD PINS
  19. #define LCD_PWR   10
  20. #define LCD_SCE   9
  21. #define LCD_RESET 8
  22. #define LCD_DC    4
  23.  
  24. Nokia_5110_lcd lcd(LCD_PWR, LCD_DC, LCD_SCE, LCD_RESET);
  25.  
  26. void setup()
  27. {  
  28.   Serial.begin (9600);
  29.   Serial.println("Start");
  30.   lcd.init(100); //parameter is contrast value, between 0 [low] and 127 [high]
  31.   lcd.clear();
  32.   pinMode(MODE_SWITCH, INPUT_PULLUP);
  33.   pinMode(BLINK_BUTTON, INPUT_PULLUP);
  34.   pinMode(CLEAR_BUTTON, INPUT_PULLUP);  
  35.   attachInterrupt(0, toggleMode, CHANGE);
  36.   attachInterrupt(1, flagBlink, CHANGE);
  37.   attachInterrupt(2, clear, CHANGE);
  38.   toggleMode();
  39. }
  40.  
  41. /* loop */
  42. void loop(){
  43.  int x = analogRead(XPIN)*XCON;
  44.  int y = analogRead(YPIN)*YCON;
  45.  //Serial.println("X: " + (String)x);
  46.  //Serial.println("Y: " + (String)y);
  47.  
  48.  if(blinkFlag){
  49.   blinkCursor(x,y);
  50.  }
  51.  lcd.setPixel(x, y, mode);
  52. }
  53.  
  54. void toggleMode() {
  55.   Serial.println(digitalRead(MODE_SWITCH));
  56.   if(digitalRead(MODE_SWITCH) == LOW){
  57.    mode = PIXEL_ON;
  58.   }
  59.   else {
  60.    mode = PIXEL_OFF;
  61.   }
  62. }
  63.  
  64. void blinkCursor(int x, int y){
  65.   Serial.println("BLINKING");
  66.   for(int i = 0; i < 8; i++){
  67.    if(i % 2 == 0){
  68.      lcd.setPixel(x, y, PIXEL_ON);
  69.    }
  70.    else {
  71.      lcd.setPixel(x, y, PIXEL_OFF);
  72.    }
  73.    delay(250);
  74.   }
  75.   lcd.setPixel(x, y, mode);
  76.   blinkFlag = false;
  77. }
  78.  
  79. void flagBlink(){
  80.   if(digitalRead(BLINK_BUTTON) == LOW){
  81.     Serial.println("flagBlink()");
  82.    blinkFlag = true;
  83.   }
  84. }
  85.  
  86. void clear(){
  87.  if(digitalRead(CLEAR_BUTTON) == LOW){
  88.    lcd.clear();
  89.  }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment