igitais: A0->14 / A1->15 / A2->16pinMode(14, OUTPUT); // Onde estava ligado o display na porta digital 5 -> Porta analógica 0pinMode(15, OUTPUT); // Onde estava ligado o display na porta digital 6 -> Porta analógica 1 pinMode(16, OUTPUT); // Onde estava ligado o display na porta digital 7 -> Porta analógica 2
// Inicializa o RFID definindo os pinos de interface#define SS_PIN 10#define RST_PIN 9RFID rfid(SS_PIN, RST_PIN);
//Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino DS1307 rtc(A4, A5);
//Definicoes do pino SQW/Outrtc.setSQWRate(SQW_RATE_1);rtc.enableSQW(true);
Espero ter ajudado…
Adicionado por Paulo Neto ao 13:15 em 15 junho 2015
nos para um projeto e estou tentando instalá-los no Windows 7 e o mesmo erro ocorre em 2 máquina diferente com os 2 nanos.
Ao conectar o nano na usb, o windows responde que um novo driver está sendo localizado, além de achá-lo ele instala com sucesso, e ao rodar tentar subir um setup e loop vazios, ele dá erro de sync!
avrdude: stk500_getsync(): not in sync: resp=0x00
Vejam imagem 001 desse fluxo padrão.
Logo percebi que os drivers que usei pro UNO e pro MEGA não serviriam pro NANO, fui a web e baixei os drivers indicados e reinstalei pelo Gerenciador de Dispositivos e ao apontar para a pasta que contem esses novos drivers, o windows atualizou e disse "O melhor software de driver para o dispositivo já está instalado". Que bom né.. pois é... voltei pra IDE do Arduino e tomei o cuidado de checar se eu havia escolhido no menu Ferramentas > Placa > Arduino Nano w/ ATmega328.
Capturei as telas e coloquei nas imagens anexas.
Aparentemente tudo certo, mas porque o erro continua? Tentei em 2 Nanos diferentes... em 2 máquinas diferentes com o windows7... o que esqueci de verificar ou fazer?
…
só o microcontrolador e a estrutura standalone, fora isso, se usar o arduino mesmo, tem que dizer se estamos upando um arduino pro mini 3.3v 8mhz ou pra um arduino Uno 5v 16mhz.
Adorei, sua dica de leitura da biblioteca wiring.c, tem muita coisa lá realmente.
Parece que ele faz a correção de acordo com o clock do cristal, acho que a resposta tá nessa parte aqui:
/* Delay for the given number of microseconds. Assumes a 1, 8, 12, 16, 20 or 24 MHz clock. */ void delayMicroseconds(unsigned int us) { // call = 4 cycles + 2 to 4 cycles to init us(2 for constant delay, 4 for variable) // calling avrlib's delay_us() function with low values (e.g. 1 or // 2 microseconds) gives delays longer than desired. //delay_us(us); #if F_CPU >= 24000000L // for the 24 MHz clock for the aventurous ones, trying to overclock // zero delay fix if (!us) return; // = 3 cycles, (4 when true) // the following loop takes a 1/6 of a microsecond (4 cycles) // per iteration, so execute it six times for each microsecond of // delay requested. us *= 6; // x6 us, = 7 cycles // account for the time taken in the preceeding commands. // we just burned 22 (24) cycles above, remove 5, (5*4=20) // us is at least 6 so we can substract 5 us -= 5; //=2 cycles #elif F_CPU >= 20000000L // for the 20 MHz clock on rare Arduino boards // for a one-microsecond delay, simply return. the overhead // of the function call takes 18 (20) cycles, which is 1us __asm__ __volatile__ ( "nop" "\n\t" "nop" "\n\t" "nop" "\n\t" "nop"); //just waiting 4 cycles if (us <= 1) return; // = 3 cycles, (4 when true) // the following loop takes a 1/5 of a microsecond (4 cycles) // per iteration, so execute it five times for each microsecond of // delay requested. us = (us << 2) + us; // x5 us, = 7 cycles // account for the time taken in the preceeding commands. // we just burned 26 (28) cycles above, remove 7, (7*4=28) // us is at least 10 so we can substract 7 us -= 7; // 2 cycles #elif F_CPU >= 16000000L // for the 16 MHz clock on most Arduino boards // for a one-microsecond delay, simply return. the overhead // of the function call takes 14 (16) cycles, which is 1us if (us <= 1) return; // = 3 cycles, (4 when true) // the following loop takes 1/4 of a microsecond (4 cycles) // per iteration, so execute it four times for each microsecond of // delay requested. us <<= 2; // x4 us, = 4 cycles // account for the time taken in the preceeding commands. // we just burned 19 (21) cycles above, remove 5, (5*4=20) // us is at least 8 so we can substract 5 us -= 5; // = 2 cycles, #elif F_CPU >= 12000000L // for the 12 MHz clock if somebody is working with USB // for a 1 microsecond delay, simply return. the overhead // of the function call takes 14 (16) cycles, which is 1.5us if (us <= 1) return; // = 3 cycles, (4 when true) // the following loop takes 1/3 of a microsecond (4 cycles) // per iteration, so execute it three times for each microsecond of // delay requested. us = (us << 1) + us; // x3 us, = 5 cycles // account for the time taken in the preceeding commands. // we just burned 20 (22) cycles above, remove 5, (5*4=20) // us is at least 6 so we can substract 5 us -= 5; //2 cycles #elif F_CPU >= 8000000L // for the 8 MHz internal clock // for a 1 and 2 microsecond delay, simply return. the overhead // of the function call takes 14 (16) cycles, which is 2us if (us <= 2) return; // = 3 cycles, (4 when true) // the following loop takes 1/2 of a microsecond (4 cycles) // per iteration, so execute it twice for each microsecond of // delay requested. us <<= 1; //x2 us, = 2 cycles // account for the time taken in the preceeding commands. // we just burned 17 (19) cycles above, remove 4, (4*4=16) // us is at least 6 so we can substract 4 us -= 4; // = 2 cycles
…
Adicionado por Weider Duarte ao 14:53 em 13 outubro 2016
mpartilhar todos os outros pinos, apenas o Enable precisa ser unico.
Tudo que se refere a lcd passa a se referir a lcd1 ou lcd2 conforme sua necessidade.
O uso de mais teclas recomendo construir um teclado maior. Vc pode construir um teclado de 8x4 assim gastaria só mais 4 pinos. Aih por ex:
const byte ROWS = 8; //Quatro linhas
const byte COLS = 4; //QUatro
char convteclado[16]={'1','4','7','2','5','8'.... //Matriz de conversão de posicoes teclado 2 para teclado1.
//Mapeamento de teclas
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A', 'E','I','M','Q',},
{'4', '5', '6', 'B', 'F','J'... // '...' significa que vc tem que terminar a tabela
{'7', '8', '9', 'C', 'G','K'...
{'*', '0', '#', 'D', 'H','L'...
Aih vc precisa fazer uma lógica depois pra transformar o 'E' em '1' do teclado 2. algo como: if (key>='E') teclado=1; // Como estão em ordem os caracteres é possivel fazer só isso para saber se é uma tecla 'alta'.
else
{teclado=2;
key=convteclado[key-'E']; // usa a tabela para converter.
}…
Adicionado por Eduardo ao 0:28 em 29 setembro 2017