Então, reformulei com um Arduino Uno, mexi no código, mas ainda esta dando erro, pois ele esta dizendo que todos os CI que tenho estão com problemas! isso não é verdade!!!
segue o código:
/*
Dado armazenado na memoria: (byte 0)
7400, 7408, 7432, 7486, 7409 == 1;
7402 == 2;
7404, 7405, 7406, 7407, 7416, 7417, 7414 == 3;
7420, 7421, 7422 == 4;
7430 == 5;
Dado armazenado na memoria: (byte 1)
"00" = 1
"02" = 2
"04" = 3
"05" = 4
"06" = 5
"07" = 6
"08" = 7
"09" = 8
"14" = 9
"16" = 10
"17" = 11
"20" = 12
"21" = 13
"22" = 14
"30" = 15
"32" = 16
"86" = 17
*/
#include <EEPROM.h>
bool p7400[4][3] = {{0,0,1},{0,1,1},{1,0,1},{1,1,0}};
bool p7408[4][3] = {{0,0,0},{0,1,0},{1,0,0},{1,1,1}};
bool p7402[4][3] = {{0,0,1},{0,1,0},{1,0,0},{1,1,0}};
byte fLogic = 0;
byte pLogic = 0;
bool e[4];
byte f, p = 0;
int b = 0;
//PARA INPUT = 1, PARA OUTPUT = 0
bool ports[5][12] = {{1,1,0,1,1,0,0,1,1,0,1,1},
{0,1,1,0,1,1,1,1,0,1,1,0},
{1,0,1,0,1,0,0,1,0,1,0,1},
{1,1,0,1,1,0,0,1,0,1,1,1},
{1,1,1,1,1,1,0,0,0,1,1,0}};
//MODELOS SUPORTADOS
String ci[17] = {"00", "02", "04", "05", "06", "07", "08", "09", "14", "16", "17", "20", "21", "22", "30", "32", "86"};
void setup() {
Serial.begin(9600); //debug
Serial.println("RESETEI");
fLogic = EEPROM.read(0); //LE O PRIMEIRO BYTE DA MEMORIA E GUARDA
pLogic = EEPROM.read(1); //LE O SEGUNDO BYTE DA MEMORIA E GUARDA
Serial.println("f: " + String(fLogic));
Serial.println("p: " + String(pLogic));
if (fLogic && pLogic){
for (int i = 2;i<=13;i++){
if (ports[fLogic][i]){
pinMode(i, OUTPUT);
}else{
pinMode(i, INPUT);
}
}
}
}
void loop() {
if (Serial.available()){
String c = String(Serial.parseInt());
Serial.println("CC: " + c);
w_EEPROM(c);
}
if (EEPROM.read(2) == 1){
if (fLogic == 1 && pLogic == 1){test("7400");}
if (fLogic == 2 && pLogic == 2){test("7402");}
}
}
void w_EEPROM(String pPort){
String p = pPort.substring(2);
if (p == "00"){EEPROM.write(0, 1);EEPROM.write(1, 1);}
if (p == "02"){EEPROM.write(0, 2);EEPROM.write(1, 2);}
if (p == "04"){EEPROM.write(0, 3);EEPROM.write(1, 3);}
if (p == "05"){EEPROM.write(0, 3);EEPROM.write(1, 4);}
if (p == "06"){EEPROM.write(0, 3);EEPROM.write(1, 5);}
if (p == "07"){EEPROM.write(0, 3);EEPROM.write(1, 6);}
if (p == "08"){EEPROM.write(0, 1);EEPROM.write(1, 7);}
if (p == "09"){EEPROM.write(0, 1);EEPROM.write(1, 8);}
if (p == "14"){EEPROM.write(0, 3);EEPROM.write(1, 9);}
if (p == "16"){EEPROM.write(0, 3);EEPROM.write(1, 10);}
if (p == "17"){EEPROM.write(0, 3);EEPROM.write(1, 11);}
if (p == "20"){EEPROM.write(0, 4);EEPROM.write(1, 12);}
if (p == "21"){EEPROM.write(0, 4);EEPROM.write(1, 13);}
if (p == "22"){EEPROM.write(0, 4);EEPROM.write(1, 14);}
if (p == "30"){EEPROM.write(0, 5);EEPROM.write(1, 15);}
if (p == "32"){EEPROM.write(0, 1);EEPROM.write(1, 16);}
if (p == "86"){EEPROM.write(0, 1);EEPROM.write(1, 17);}
for (int i = 0;i<17;i++){
String t1 = ci[i];
if (p == t1){
//Serial.println("BYE");
EEPROM.write(2, 1);
delay(100);
software_Reset();
}
}
}
void software_Reset(){
asm volatile (" jmp 0");
}
void test(String pPorta){
String p = pPorta.substring(2);
bool result[4][4];
bool final[16];
int incr = 0;
for (int i=0;i<4;i++){
if (p == "00"){
digitalWrite(2, p7400[i][0]);
delay(1);
digitalWrite(3, p7400[i][1]);
delay(1);
digitalWrite(5, p7400[i][0]);
delay(1);
digitalWrite(6, p7400[i][1]);
delay(1);
digitalWrite(9, p7400[i][1]);
delay(1);
digitalWrite(10, p7400[i][0]);
delay(1);
digitalWrite(12, p7400[i][0]);
delay(1);
digitalWrite(13, p7400[i][1]);
delay(1);
result[i][0] = digitalRead(4);
delay(1);
result[i][1] = digitalRead(7);
delay(1);
result[i][2] = digitalRead(8);
delay(1);
result[i][3] = digitalRead(11);
delay(1);
}
if (p == "02"){
digitalWrite(3, p7402[i][0]);
delay(1);
digitalWrite(4, p7402[i][1]);
delay(1);
digitalWrite(7, p7402[i][0]);
delay(1);
digitalWrite(7, p7402[i][1]);
delay(1);
digitalWrite(8, p7402[i][1]);
delay(1);
digitalWrite(9, p7402[i][0]);
delay(1);
digitalWrite(11, p7402[i][0]);
delay(1);
digitalWrite(12, p7402[i][1]);
delay(1);
result[i][0] = digitalRead(2);
delay(1);
result[i][1] = digitalRead(5);
delay(1);
result[i][2] = digitalRead(10);
delay(1);
result[i][3] = digitalRead(13);
delay(1);
}
}
for (int i = 0;i<4;i++){
for (int ii = 0;ii<4;ii++){
if (p == "00"){
if (!p7400[i][2] == result[i][ii]){
final[incr] = 1;
delay(20);
}else{
final[incr] = 0;
delay(20);
}
if (p == "02"){
if (!p7400[i][2] == result[i][ii]){
final[incr] = 1;
delay(20);
}else{
final[incr] = 0;
delay(20);
}
incr++;
}
}
}
}
for (int i = 0;i<16;i++){
if (!final[i]){
Serial.println("Erro no Teste: " + String(i));
}else {
Serial.println("Sucesso no Teste: " + String(i));
}
}
EEPROM.write(2, 0);
}