I cleaned up the code a bit and still get strange results on the serial monitor.
char addressBit[15];
char dataBit[10];
int arrayIndex, i;
boolean startedA, endedA, flow = false;
int CE = 47;
int OE = 48;
int WE = 49;
int AP[13] = {
22,24,26,28,30,32,34,36,38,40,42,44,46};
int DP[8] = {
23,25,27,29,31,33,35,37};
void setup(){
Serial.begin(9600);
Serial.println("Enter address in decimal starting with the letter a and finishing it with a period!");
Serial.println("Then enter data in decimal between d and comma!");
for (i=2;i<10;i++) {
pinMode(AP[i],OUTPUT); // address pins
}
for (i=9;i<14;i++) {
pinMode(DP[i],INPUT); // data pins
}
// Setup Control Pins
pinMode(CE, OUTPUT);
pinMode(WE, OUTPUT);
pinMode(OE, OUTPUT);
pinMode(45, OUTPUT);
// Setup Chip
digitalWrite(CE, HIGH);
digitalWrite(WE, LOW);
digitalWrite(OE, HIGH);
}
void loop(){
digitalWrite(45, HIGH);
while(Serial.available() > 0)
{
char aChar = Serial.read();
if(aChar == 'r') //beginning of the string
{
startedA = true;
arrayIndex = 0;
addressBit[arrayIndex] = '\0';
}
else if(aChar == '/') //end of string
{
endedA = true;
}
else if(startedA)
{
addressBit[arrayIndex] = aChar;
arrayIndex++;
addressBit[arrayIndex] = '\0';
}
}
if(startedA && endedA){ // string filled up
int incomingByteA = atoi(addressBit); // Convert the string to an integer
for(int j=0; j<13; j++){
digitalWrite (AP[j], bitRead (incomingByteA,j)); // extract relevant bit and output on relevant pin.
int a = bitRead (incomingByteA,j);
//Serial.println(a);
}
// Get ready for the next time
startedA = false;
endedA = false;
arrayIndex = 0;
addressBit[arrayIndex] = '\0';
}
digitalWrite(WE,LOW); // Write Disabled
delay(1);
digitalWrite(CE,HIGH); // Chip enabled
delay(1);
digitalWrite(OE,HIGH); // Reads Enabled
delay(1);
for(int i=0; i<8; i++){
int data = digitalRead(DP[i]);
Serial.print(data);
}
Serial.println(" ");
delay(300);
}
Anyone could verify if it works? Just looking at the serial monitor doesn't help. Still struggle with that last for loop, I wish I knew how to execute it one!