aboutsummaryrefslogtreecommitdiff
path: root/Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino
diff options
context:
space:
mode:
authorBlaise Thompson <blaise@untzag.com>2021-01-19 10:53:07 -0600
committerBlaise Thompson <blaise@untzag.com>2021-01-19 10:53:07 -0600
commit84407fe580156dc12f4792c08ee42d70df6c4427 (patch)
tree14770f62848080c5508346761dc50dec68b4aa32 /Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino
parent132c489782ce84ba676eacdd9903cc26ee5de2cb (diff)
restructure repository
Diffstat (limited to 'Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino')
-rw-r--r--Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino122
1 files changed, 0 insertions, 122 deletions
diff --git a/Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino b/Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino
deleted file mode 100644
index ef9df86..0000000
--- a/Digital Photoreactor Controller Firmware/Test Sketchs/Slave_Random_LED_I2C/Slave_Random_LED_I2C.ino
+++ /dev/null
@@ -1,122 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////////
-// I2C test program for Digital Photoreactor Controller using TinyWireS library //
-// Run this slave program on the AtTiny85. //
-////////////////////////////////////////////////////////////////////////////////////
-// This test program is adapted from the TinyWireS stress test program //
-// developed by Scott Hartog: https://github.com/rambo/TinyWire //
-// //
-// The slave program receives via I2C N bytes of random data in a single //
-// receiveEvent() callback and stores that data in a global buffer. //
-// It then responds the first requestEvent() callback with the same data. //
-// The requestEvent() callback overwrites the data buffer with zeros after //
-// responding so it will only respond correctly to the first requestEvent() //
-// callback after each receiveEvent() callback. Subsequent requestEvent() //
-// will respond with 0xff for all data bytes. //
-// //
-// //
-// SETUP: //
-// AtTiny85 Pin 2 = PB3 = Blink LED //
-// Attiny85 Pin 3 (PB4) = LED PWM //
-// AtTiny85 Pin 5 (PB0/SDA) = I2C SDA //
-// connect to SDA on master with external pull-up (~4.7K) //
-// AtTinyPin 6 (PB1) = Fan PWM //
-// AtTiny Pin 7 (PB0/SCL) = I2C SCL //
-// connect to SCL on master with external pull-up (~4.7K) //
-// AtTiny Pin 1 (PB5/!RST) //
-// connect to reset on master (or just pull-up) //
-// //
-////////////////////////////////////////////////////////////////////////////////////
-
-#include "TinyWireS.h" // wrapper class for I2C slave routines
-
-#define I2C_SLAVE_ADDR 0x26 // I2C slave address (38, 0x26),
-
-uint8_t master_data[16]; // global buffer to store data sent from the master.
-uint8_t master_bytes; // global variable to number of bytes sent from the master.
-
-const int LEDPin = 4; //Arduino pin 4, pin 3 on AtTiny85 pinout
-const int FanPin = 1; //Arduino pin 1, pin 6 on AtTiny85 pinout
-const int BlinkPin = 3; //Arduino pin 3, pin 2 on AtTiny85 pinout
-
-// Gets called when the ATtiny85 receives an I2C write slave request
-void receiveEvent(uint8_t num_bytes)
-{
- uint8_t i;
-
- // save the number of bytes sent from the master
- master_bytes = num_bytes;
-
- // store the data from the master into the data buffer
- for (i = 0; i < master_bytes; i++)
- master_data[i] = TinyWireS.receive();
-
- // set LED and Fan PWM duty to random byte values recieved from the master
- analogWrite(FanPin, master_data[0]);
- analogWrite(LEDPin, master_data[1]);
-
- // blink LED whenever data is successfuly recieved
- digitalWrite(BlinkPin, HIGH);
- delay(10);
- digitalWrite(BlinkPin, LOW);
- delay(10);
-
-}
-
-// Gets called when the ATtiny receives an i2c read slave request
-void requestEvent()
-{
- uint8_t i;
-
- // send the data buffer back to the master
- for (i = 0; i < master_bytes; i++)
- TinyWireS.send(master_data[i]);
-
- // corrupt the byte values in the data buffer
- // so that subsequent call won't match
- for (i = 0; i < master_bytes; i++)
- master_data[i] += 0x5a;
-
- // corrupt length of the request, but dont' make it zero
-
- // if the usiTwiSlave.c is working fine, then this number is completely irrelevant
- // because the requestEvent() callback will not be called again until
- // after the next receiveEvent() callback, so the master_data and
- // master_bytes variables will be set by that call.
-
- // If the usiTwiSlave.c has the issue of calling the requestFrom() callback
- // for each byte sent, the buffer will accumulate by this amount *for each byte
- // in the original request*.
- //
- // Making it zero will obscure the 1-byte send issue in the usiTwiSlave.c
- // that is being tested.
- // Making it small will allow a few requests to succeed before the tx buffer
- // overflows and the usiTwiSlave.c hangs on the "while ( tmphead == txTail );"
- // line
- master_bytes = 2;
-}
-
-void setup()
-{
- // initialize the TinyWireS and usiTwiSlave libraries
- TinyWireS.begin(I2C_SLAVE_ADDR); // init I2C Slave mode
-
- // register the onReceive() callback function
- TinyWireS.onReceive(receiveEvent);
-
- // register the onRequest() callback function
- TinyWireS.onRequest(requestEvent);
-
- pinMode(LEDPin, OUTPUT); // set pin for LED PWM
- pinMode(FanPin, OUTPUT); // set pin for Fan PWM
- pinMode(BlinkPin, OUTPUT); // set pin to blink LED
-
- TCCR0B = TCCR0B & 0b11111000 | 0b001; // sets internal timer of AtTiny85 to 31250 Hz for fast PWM for controlling fan speed
-}
-
-void loop()
-{
- // this needs to be here
- /////////////Does this really need to be here?????
- //TinyWireS_stop_check();
- // otherwise empty loop
-}