A e tem outro modulo shield GSM por cima do GPS.
Eu consigo utilizar o GPS com o Arduíno e o GSM com o Arduíno, mas não os 3 juntos.
Por exemplo para utilizar o GPS eu coloquei 2 fios jumpers, um na porta 5 e um na 6 do GPS e no MEGA liguei no RX 18 TX 19 e funciona. Achei que colocando o GSM por cima eu utilizaria as msm portas 5 e 6 e funcionaria o GPS mas nao... Alguém pode me dar uma dica? …
ado
{1, 0, 0, 0, 1, 1, 1}, //Reprovado por falta
{1, 0, 0, 0, 1, 1, 0}, //Reprovado por nota
{0, 1, 1, 1, 0, 0, 0} //Laureado
};
int display[7] = {3, 4, 5, 6, 7, 8, 9}; //3=a 4=b 5=c 6=d 7=e 8=f 9=g
Depois cria uma função para escrever no display assim
void escreveDisplay(int x){
for(int i=0; i<7; i++){
digitalWrite(display[i], caracteres[x][i];
}
}
E dentro do IF você chama essa função, por exemplo, no lugar de "//codigo para mostrar aprovado" você coloca escreveDisplay(0);
Nessa função se você enviar 0 será aprovado, 1 será reprovado por falta, 2 reprovado por nota e 3 laureado.
Obs.: não testei o código, só escrevi.…
Nesse caso a ordem é diferente da que eu quero, sendo ela:
Subida de 0 a 5V -
tabela para este caso:
A B S
0 0 0
0 1 0
1 1 1
Descida de 5 a 0V -
tabela para este caso:
A B S
1 1 1
0 1 0
0 0 0
Adicionado por José Leonardo ao 12:55 em 14 julho 2022
que eu "ACHO" que devem ser estas ligações. As minhas modificações estão em vermelho e azul claro.
segue o sketch que encontrei.
//Function: This program is based on ARDUINO MEGA 2560 driver L298-driven stepper motor 28BYJ-48//Time:August,17,2012int IN1=1;int IN2=2;int IN3=3;int IN4=4;void setup(){ int i; for(i=1;i<5;i++) pinMode(i,OUTPUT);}void loop(){ byte phaseccw[8]={0x01,0x02,0x04,0x08,0x01,0x02,0x04,0x08}; byte speed = 5; byte i,j,k,n,temp; for(n=0;n<3;n++)//Forward to accelerate the rotation three times { for(k=0;k<255;k++) { for(i=0;i<8;i++) { temp = phaseccw[i]; for(j=1;j<5;j++) { //temp = phaseccw[i]; digitalWrite(j,temp&0x01); temp>>=1; } delay(speed); } } speed++; } for(j=1;j<5;j++) digitalWrite(j,phaseccw[i]&0x00); delay(1000);
for(n=0;n<3;n++)//Reverse deceleration rotation three times { for(k=0;k<255;k++) { for(i=0;i<8;i++) { temp = phaseccw[i]; for(j=1;j<5;j++) { digitalWrite(5-j,temp&0x01); temp>>=1; } delay(speed); } } speed--; } for(j=1;j<5;j++) digitalWrite(j,phaseccw[i]&0x00); delay(1000);}
Rui…
Adicionado por mineirin RV ao 8:09 em 26 março 2015
faça apenas 1 função exec(int qualpino) e coloque antes do setup()
ao chamar a funçao,
if ((Serial.available()) == 1) { void exec(5);
}
boa sorte,
'Eiju
= pino do MT8816]:
COLUNAS: [2=Y0], [3=Y1], [4=Y2], [5=Y3], [6=Y4], [7=Y5], [8=Y6] e [9=Y7]
LINHAS: [11=X0], [12=X1], [13=X2], [14=X3], [15=X4], [16=X5], [17=X6] e [18=X7]
Para os demais pinos (1, 22, 24 e 25) use o 4066.
Utilize 2 opto-acopladores para enviar o estado dos leds para o arduino (pinos 19, 20 e 21).
Para o código do Arduino, crie um array da seguinte forma:
byte mapa_linha_coluna[128][2];
Defina os caracteres de modo que o primeiro elemento do array siga o código ASCII.
O segundo elemento seria LINHA (0) ou COLUNA (1).
Deste modo, por exemplo, desejar imprimir o caractere '1' na sua máquina, a informação de LINHA estará no mapa_linha_coluna[49,0] e coluna no mapa_linha_coluna[49,1].
Ou seja: criando uma função pressionar(int caractere), passando o caractere '1' para ele => pressionar('1')
Sem precisar aninhar IF, basta chamar 2 funções que fazem o seguinte:
setar_pinos_linha(mapa_linha_coluna[caractere,0]);
setar_pinos_coluna(mapa_linha_coluna[caractere,1]);
Seu programa ficará bem simples e rápido.
Valeu?
Boa sorte!!!
'Eiju
…