Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Arduino analog input 5 - I2C SCL
- // Arduino analog input 4 - I2C SDA
- #include <Wire.h>
- int set1StartAddress = 0x20;
- int set2StartAddress = 0x38;
- //byte oldModuleId = 0;
- int oldModuleId = 0;
- byte data; // the data that presents at the seial port
- int moduleNo; // modules 0-12
- int ledNo; // leds 0-7
- byte moduleId; //this is a byte representation of fixed "set" address + module number (0-12)
- byte ledByte; // this is
- int LEDPin = 13;
- void setup() {
- pinMode(LEDPin, OUTPUT); // set pin 13 to be an output
- // initialize the serial communication:
- Serial.begin(9600);
- Wire.begin();
- //flash flash: lets us know the program is running
- digitalWrite(LEDPin, HIGH);
- delay(250);
- digitalWrite(LEDPin, LOW);
- delay(250);
- digitalWrite(LEDPin, HIGH);
- delay(250);
- digitalWrite(LEDPin, LOW);
- delay(250);
- //turn set 1 off
- for(int i = 0; i<8; i++) {
- moduleId = byte(set1StartAddress + i);
- Wire.beginTransmission(moduleId);
- Wire.write(0);
- Wire.endTransmission();
- }
- //turn set 2 off
- for(int i = 0; i<5; i++) {
- moduleId = byte(set2StartAddress + i);
- Wire.beginTransmission(moduleId);
- Wire.write(0);
- Wire.endTransmission();
- }
- }
- //Waits for a number 0 - 100 from processing
- void loop(){
- //check for available byte and read it
- if(Serial.available() > 0) {
- //serial working feedback
- digitalWrite(LEDPin, HIGH);
- data = Serial.read();
- // gives module number 0-12 (sans remainder)
- moduleNo = int(data) / 8;
- // gives 1 of 8 LEDs 0-7 (using remainder)
- ledNo = int(data) % 8;
- //which I2c module set are we addressing?
- if(moduleNo < 8) {
- moduleId = byte(set1StartAddress + moduleNo);
- }
- else {
- moduleId = byte(set2StartAddress + moduleNo - 8);
- }
- //set LED byte
- ledByte = byte(1 << ledNo);
- //Switch old module off
- Wire.beginTransmission(oldModuleId);
- Wire.write(0);
- Wire.endTransmission();
- //Switch new LED on
- Wire.beginTransmission(moduleId);
- Wire.write(ledByte);
- Wire.endTransmission();
- oldModuleId = moduleId;
- }
- digitalWrite(LEDPin, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement