@ -12,7 +12,7 @@
// 07 5/PD3/INT1
// 08 6/PD4
// 09 7/PD5
// 10 GND
// 10 GND
// 11 8/PD6
// 12 9/PB0/PCINT0
// 13 10/PB1/PCINT1
@ -28,10 +28,15 @@
// sda: 17
// scl: 19
// DIP Switch ATTiny Pins
// DIP Switch 1 ATTiny Pins
// 2 - 9
# define I2C_ADDRESS 0x96
// DIP Switch 2 ATTiny Pins
// 1
// 11-16
// 18
# define I2C_ADDRESS 0x65
# include <Wire.h>
@ -44,7 +49,15 @@ void setup() {
pinMode ( 5 , INPUT ) ;
pinMode ( 6 , INPUT ) ;
pinMode ( 7 , INPUT ) ;
pinMode ( 17 , INPUT ) ;
pinMode ( 8 , INPUT ) ;
pinMode ( 9 , INPUT ) ;
pinMode ( 10 , INPUT ) ;
pinMode ( 11 , INPUT ) ;
pinMode ( 12 , INPUT ) ;
pinMode ( 13 , INPUT ) ;
pinMode ( 15 , INPUT ) ;
Wire . begin ( I2C_ADDRESS ) ;
Wire . onRequest ( requestEvent ) ;
}
@ -55,15 +68,24 @@ void loop() {
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
byte dip_switch = 0 b00000000 ;
byte dip_switches [ ] = { 0 b00000000 , 0 b00000000 } ;
void requestEvent ( ) {
bitWrite ( dip_switch , 0 , digitalRead ( 0 ) ) ;
bitWrite ( dip_switch , 1 , digitalRead ( 1 ) ) ;
bitWrite ( dip_switch , 2 , digitalRead ( 2 ) ) ;
bitWrite ( dip_switch , 3 , digitalRead ( 3 ) ) ;
bitWrite ( dip_switch , 4 , digitalRead ( 4 ) ) ;
bitWrite ( dip_switch , 5 , digitalRead ( 5 ) ) ;
bitWrite ( dip_switch , 6 , digitalRead ( 6 ) ) ;
bitWrite ( dip_switch , 7 , digitalRead ( 7 ) ) ;
Wire . write ( dip_switch ) ;
bitWrite ( dip_switches [ 0 ] , 7 , digitalRead ( 0 ) ) ;
bitWrite ( dip_switches [ 0 ] , 6 , digitalRead ( 1 ) ) ;
bitWrite ( dip_switches [ 0 ] , 5 , digitalRead ( 2 ) ) ;
bitWrite ( dip_switches [ 0 ] , 4 , digitalRead ( 3 ) ) ;
bitWrite ( dip_switches [ 0 ] , 3 , digitalRead ( 4 ) ) ;
bitWrite ( dip_switches [ 0 ] , 2 , digitalRead ( 5 ) ) ;
bitWrite ( dip_switches [ 0 ] , 1 , digitalRead ( 6 ) ) ;
bitWrite ( dip_switches [ 0 ] , 0 , digitalRead ( 7 ) ) ;
bitWrite ( dip_switches [ 1 ] , 0 , digitalRead ( 15 ) ) ;
bitWrite ( dip_switches [ 1 ] , 1 , digitalRead ( 13 ) ) ;
bitWrite ( dip_switches [ 1 ] , 2 , digitalRead ( 12 ) ) ;
bitWrite ( dip_switches [ 1 ] , 3 , digitalRead ( 11 ) ) ;
bitWrite ( dip_switches [ 1 ] , 4 , digitalRead ( 10 ) ) ;
bitWrite ( dip_switches [ 1 ] , 5 , digitalRead ( 9 ) ) ;
bitWrite ( dip_switches [ 1 ] , 6 , digitalRead ( 8 ) ) ;
bitWrite ( dip_switches [ 1 ] , 7 , digitalRead ( 17 ) ) ;
Wire . write ( dip_switches , sizeof ( dip_switches ) ) ;
}