hi!
i'm tryig to make my button pad work, anmd i'm working on the actual buttons now, so from my code, you will notice i turn pins 0-3 on and off, one by one so i can scan which row of and column button is being pressed, but unfortunitly when i debug by printing in the value, it only half works, and half the butto pad is not even acknowledged...
so here is my code, if u need help understanding what i did and why, please ask, becuase this is the finale step to get this code working
::
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO - not used, but part of builtin SPI
#define SPICLOCK 13//sck
#define SLAVESELECT 10
byte potpin = 0;
byte r1=0; //sets the correct pins to the right color, do not change!
byte g2=1;
byte g1=2;
byte b2=3;
byte b1=4;
byte r2=5;
byte delay1 = 100; // my delay value
byte val1 = 0; // the value i hope to fade
byte direction = 0;
char spi_transfer(volatile char data)
{
SPDR = data; // Start the transmission
while (!(SPSR & (1<<SPIF))) // Wait the end of the transmission
{
};
return SPDR; // return the received byte
}
void setup()
{
byte i;
byte clr;
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(16, INPUT);
pinMode(17, INPUT);
pinMode(18, INPUT);
pinMode(19, INPUT);
digitalWrite(SLAVESELECT,HIGH); //disable device
// SPCR = 01010000
//interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
//sample on leading edge of clk,system clock/4 (fastest)
SPCR = (1<<SPE)|(1<<MSTR);
clr=SPSR;
clr=SPDR;
delay(10);
for (i=0;i<6;i++)
{
write_pot(i,255);
}
}
byte write_pot(int address, int value)
{
digitalWrite(SLAVESELECT,LOW);
//2 byte opcode
spi_transfer(address);
spi_transfer(value);
digitalWrite(SLAVESELECT,HIGH); //release chip, signal end transfer
Serial.begin(9600);}
void loop()
{
Serial.println(digitalRead(18));
digitalWrite(15, LOW);
digitalWrite(14, HIGH);
delay(delay1);
digitalWrite(7, LOW); //button 1, 1 and 1, 2:
//if( digitalRead(1) = HIGH && digitalRead(16) == HIGH )
//{ write_pot(r1, 0);}
//else
//{write_pot(r1, 255);}
delay(delay1);
digitalWrite(0, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW); // button 2, 1 and 2, 2:
//write_pot(r1, 255);
delay(delay1);
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH); // button 3, 1 and 3, 2:
delay(delay1);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH); //button 4, 1 and 4, 2:
delay(delay1);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(15, HIGH);
digitalWrite(14, LOW);
// second relay starts here
delay(delay1);
digitalWrite(3, LOW);
digitalWrite(7, LOW); // button 1, 3 and 1, 4:
delay(delay1);
digitalWrite(7, HIGH);
digitalWrite(6, LOW); //button 2, 3 and 2, 4:
delay(delay1);
digitalWrite(5, LOW);
digitalWrite(6, HIGH); //button 3, 3 and 3, 4:
delay(delay1);
digitalWrite(4, LOW);
digitalWrite(5, HIGH); // button 4, 3 and 4, 4:
delay(delay1);
digitalWrite(4, HIGH);
}