nha hi contar 5 segundos e acionar o pino 6 por 5 segundos e após desligar o pino 6 mesmo que o pino 2 se mantenha acionado, depois quando o pino 2 for low desligar tanto o pino 5 quanto o pino 6, mas ocorre erros nas leituras, e o caso que tenho que fazer 2 conjuntos iguais, tipo leitura no pino 2 e 3 e saídas nos pinos 5 e 6 e nos 7 e 8…
Adicionado por jango marques ao 21:35 em 2 agosto 2018
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
Preciso conectar 7 cubos de led 3x3x3 ao Arduino Uno.
Pergunta 1) É possível fazer esta conexão sem danificar o Arduino?
2) Como seria este circuito? Devo usar o Drive de corrente?
Crystal lcd(12, 11, 5, 4, 3, 2);int botao = 7;
int estadoBotao = 0;void setup(){pinMode (13, OUTPUT);pinMode(7, INPUT);lcd.begin(16, 2);lcd.print("teste");lcd.setCursor(0,1);lcd.print("circuitos integrados");}void loop() { estadoBotao = digitalRead(botao); if (estadoBotao == 0) { lcd.clear(); } }
o meu botão esta ligado no pino 7 do arduino. a mesma ponta é ligada a uma alimentação e a outra ponta é aterrada com um resistor de 10k. Quando eu clico no botão, nada acontece. O que esta de errado com o codigo??
…
rem como usei muitos arrays estourei a memoria do meu Arduino.
Alguem poderia me ajudar?
Estou usando o CI 74hc595 em cascata para manipular 16 displays de sete segmentos.
Com o codigo em anexo só consigo manipular 2 displays.
Eu já tentei com Matriz de duas dimensões, mas parece que o procedimento é o mesmo que de arrays.
Essa mascara de mult arrays represnta a linha de displays que eu quero comandar(dispay 1...display 4)
int *DisplayLinha[44] [24]= { {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0},//1 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1},//2 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0},//3 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0},//4 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0},//5 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1},//6 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0},//7 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1},//8 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0},//9 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1},//0 {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0},//d {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0},//1 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1},//2 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0},//3 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0},//4 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0},//5 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1},//6 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0},//7 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1},//8 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0},//9 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1},//0 {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0},//d {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0},//1 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1},//2 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0},//3 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0},//4 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0},//5 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1},//6 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0},//7 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1},//8 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0},//9 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1},//0 {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0},//d {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0},//1 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1},//2 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0},//3 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0},//4 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0},//5 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1},//6 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0},//7 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1},//8 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0},//9 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1},//0 {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0}};//d
código pronto - dá estouro na memoria! int D1um[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0};//1 int D1dois[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1};//2 int D1tres[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0};//3 int D1quatro[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0};//4 int D1cinco[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0};//5 int D1seis[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1};//6 int D1sete[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0};//7 int D1oito[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1};//8 int D1nove[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0};//9 int D1zero[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1};//0 int D1dig[] = {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};//d
// D A,F,G,B,C,d,E D A,F,G,B,C,d,E int D2um[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0};//1 int D2dois[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1};//2 int D2tres[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0};//3 int D2quatro[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0};//4 int D2cinco[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0};//5 int D2seis[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1};//6 int D2sete[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0};//7 int D2oito[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1};//8 int D2nove[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0};//9 int D2zero[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1};//0 int D2dig[] = {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};//d
// D A,F,G,B,C,d,E D A,F,G,B,C,d,E /*int D3um[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0};//1 int D3dois[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1};//2 int D3tres[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0};//3 int D3quatro[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0};//4 int D3cinco[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0};//5 int D3seis[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1};//6 int D3sete[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0};//7 int D3oito[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1};//8 int D3nove[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0};//9 int D3zero[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1};//0 int D3dig[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};//d
int D4um[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0};//1 int D4dois[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1};//2 int D4tres[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0};//3 int D4quatro[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0};//4 int D4cinco[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0};//5 int D4seis[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1};//6 int D4sete[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0};//7 int D4oito[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1};//8 int D4nove[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0};//9 int D4zero[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1};//0 int D4dig[] = {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};//d //array dos numeros*/ int *number[] = {D1dig,D1zero,D1um,D1dois,D1tres,D1quatro,D1cinco,D1seis,D1sete,D1oito,D1nove, D2dig,D2zero,D2um,D2dois,D2tres,D2quatro,D2cinco,D2seis,D2sete,D2oito,D2nove}; /*D3dig,D3zero,D3um,D3dois,D3tres,D3quatro,D3cinco,D3seis,D3sete,D3oito,D3nove, D4dig,D4zero,D4um,D4dois,D4tres,D4quatro,D4cinco,D4seis,D4sete,D4oito,D4nove};*/
//Define os pinos de saida int SER = 8; int RCLK = 11; int SRCLK = 12;
int counter = 0;
void changeValues(int *val[]){ for (int j=0;j<22;j++){ for(int i=23; i > -1; i--){ //SRCLK deslocamento digitalWrite(SRCLK, LOW); //HIGH logo apos deslocar, setar o clock digitalWrite(RCLK, HIGH); int PIN = val[j][i]; //pino a deslocar digitalWrite(SER, PIN); //HIGH para ativar digitalWrite(SRCLK, HIGH); } digitalWrite(RCLK, LOW); delay(500); } }
void setup(){ //configurando pinos como saida pinMode(SER,OUTPUT); pinMode(RCLK,OUTPUT); pinMode(SRCLK,OUTPUT); }
void loop(){ changeValues(number); counter += 1; if (counter >7){counter =0;} }…
Adicionado por jose merces ao 21:59 em 20 novembro 2014
ss ip(192,168,1,122); // alterar IP do vosso RouterIPAddress gateway(192, 168, 1, 1);IPAddress subnet(255, 255, 255, 0);EthernetServer server(82);
void setup(){ Serial.begin(9600); pinMode(rele1, OUTPUT); pinMode(rele2, OUTPUT); SPI.begin(); Ethernet.begin(mac, ip, gateway, subnet); server.begin();} void loop(){ char valorlido = Serial.read(); if (valorlido == 'a') {digitalWrite(rele1, HIGH); Serial.println("Rele 1 Ligado");} if (valorlido == 'b') {digitalWrite(rele1, LOW); Serial.println("Rele 1 Apagado");} if (valorlido == 'c') {digitalWrite(rele2, HIGH); Serial.println("Rele 2 Ligado");} if (valorlido == 'd') {digitalWrite(rele2, LOW); Serial.println("Rele 2 Apagado");} EthernetClient client = server.available(); if (client) { String vars1; while (client.connected()) if (client.available()) {char c = client.read(); vars1.concat(c); if (vars1.endsWith("/1on")) varOnOff1 = 1; else if(vars1.endsWith("/1off")) varOnOff1 = 2; if(varOnOff1 == 1) digitalWrite(rele1, HIGH); else if (varOnOff1 == 2) digitalWrite(rele1, LOW); if (vars1.endsWith("/2on")) varOnOff1 = 3; else if(vars1.endsWith("/2off")) varOnOff1 = 4; if(varOnOff1 == 3) digitalWrite(rele2, HIGH); else if (varOnOff1 == 4) digitalWrite(rele2, LOW); } }}
Dá para ligar 2 relés pelas portas 6 e 7 do Arduino através de internet e shield Bluetooth.
Para bluetooth:
Instalar bluetooh no telemóvel e ligar (password: 1234)
a - liga relé 1
b - apaga relé 1
c - liga relé 2
d - apaga relé 2
Para Internet:
Criar um IP através de DYNDNS.org.
Abrir a porta 82 (ou outra à escolha) no router.
Digitar: exemplo.dyndns.org/1on para ligar relé 1
exemplo.dyndns.org/1off para apagar relé 1
exemplo.dyndns.org/2on para ligar relé 2
exemplo.dyndns.org/2off para apagar relé 2
Espero que ajude alguém!!!!!…
Adicionado por Mário Ventura ao 10:39 em 29 janeiro 2014
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?
…