Advertisement
Guest User

Untitled

a guest
Feb 12th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1.  
  2.  
  3. //  Arduino analog input 5 - I2C SCL
  4. //  Arduino analog input 4 - I2C SDA
  5.  
  6. #include <Wire.h>
  7.  
  8. int set1StartAddress = 0x20;
  9. int set2StartAddress = 0x38;
  10.  
  11. //byte oldModuleId = 0;
  12. int oldModuleId = 0;
  13.  
  14. byte data;  // the data that presents at the seial port
  15. int moduleNo; // modules 0-12
  16. int ledNo; // leds 0-7
  17. byte moduleId; //this is a byte representation of fixed "set" address + module number (0-12)
  18. byte ledByte; // this is
  19.  
  20. int LEDPin = 13;
  21.  
  22. void setup() {
  23.  
  24.   pinMode(LEDPin, OUTPUT);    // set pin 13 to be an output
  25.  
  26.   // initialize the serial communication:
  27.   Serial.begin(9600);
  28.   Wire.begin();
  29.  
  30.   //flash flash: lets us know the program is running
  31.   digitalWrite(LEDPin, HIGH);
  32.   delay(250);
  33.   digitalWrite(LEDPin, LOW);
  34.   delay(250);
  35.   digitalWrite(LEDPin, HIGH);
  36.   delay(250);
  37.   digitalWrite(LEDPin, LOW);
  38.   delay(250);
  39.  
  40.   //turn set 1 off
  41.   for(int i = 0; i<8; i++) {
  42.     moduleId = byte(set1StartAddress + i);
  43.     Wire.beginTransmission(moduleId);
  44.     Wire.write(0);
  45.     Wire.endTransmission();
  46.   }
  47.  
  48.   //turn set 2 off
  49.   for(int i = 0; i<5; i++) {
  50.     moduleId = byte(set2StartAddress + i);
  51.     Wire.beginTransmission(moduleId);
  52.     Wire.write(0);
  53.     Wire.endTransmission();
  54.   }
  55. }
  56.  
  57. //Waits for a number 0 - 100 from processing
  58. void loop(){
  59.  
  60.   //check for available byte and read it
  61.   if(Serial.available() > 0) {
  62.  
  63.     //serial working feedback
  64.     digitalWrite(LEDPin, HIGH);
  65.  
  66.     data = Serial.read();
  67.  
  68.     // gives module number 0-12 (sans remainder)
  69.     moduleNo = int(data) / 8;
  70.     // gives 1 of 8 LEDs 0-7 (using remainder)
  71.     ledNo = int(data) % 8;
  72.  
  73.     //which I2c module set are we addressing?
  74.     if(moduleNo < 8) {
  75.       moduleId = byte(set1StartAddress + moduleNo);
  76.     }
  77.     else {
  78.       moduleId = byte(set2StartAddress + moduleNo - 8);
  79.     }
  80.  
  81.     //set LED byte
  82.     ledByte = byte(1 << ledNo);
  83.  
  84.  
  85.  
  86.     //Switch old module off
  87.     Wire.beginTransmission(oldModuleId);
  88.     Wire.write(0);
  89.     Wire.endTransmission();
  90.  
  91.     //Switch new LED on
  92.     Wire.beginTransmission(moduleId);
  93.     Wire.write(ledByte);
  94.     Wire.endTransmission();
  95.  
  96.     oldModuleId = moduleId;
  97.  
  98.   }
  99.   digitalWrite(LEDPin, LOW);
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement