Teste ao motor com o relé de 12v e botão para “acelerador”.
Teste ao motor com o relé de 12v e botão para “acelerador”.
Scuderia PIEFTOPTEAM
Primeiro teste do motor com chassi.
#define ledPin 13
int blueChar = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
blueChar = Serial.read(); // Reads the data from the serial port
}
switch (blueChar) {
case ‘0’:
digitalWrite(ledPin, LOW); // Turn LED OFF
// Serial.println(“LED: OFF”); // Send back, to the phone, the String “LED: ON”
//state = ‘0’;
break;
case ‘1’:
digitalWrite(ledPin, HIGH);
//Serial.println(“LED: ON”);;
//state = ‘1’;
break;
case ‘a’:
Serial.println(‘a’);
digitalWrite(13, HIGH);
break;
case ‘b’:
Serial.println(‘b’);
digitalWrite(13, LOW);
break;
case ‘c’:
Serial.println(‘c’);
break;
case ‘d’:
Serial.println(‘d’);
break;
}
blueChar=’ ‘;
}
O projeto proposto pelos alunos do secundário demonstrou ser um “osso duro de roer”.
O teste da placa GSM foi algo simples e a implementação dos botões também mas deparamo-nos com um problema grave: o projeto por vezes parece bloquear. Revistas todas as ligações, código e não se deteta o problema. Quando voltamos à nossa sala habitual de trabalho tudo volta a funcionar normalmente. O que será?
Depois de muito procurar o problema foi identificado. O conjunto antena/cartão SIM não liga na sala de aulas onde gravamos o vídeo 😀
Podem assim ver o vídeo onde se nota o problema de ligação à rede GSM.
Nas próximas semanas iremos documentar melhor o projeto e gravar um vídeo com todas as funcionalidades do produto.
Sigam o blog.
Botão Mágico
Se uma imagem vale por mil palavras então um vídeo valerá por milhares senão milhões de palavras. Assim depois de muitas horas a debater, pensar, executar, rever e testar, é com uma grande satisfação que mostramos o resultado do árduo trabalho.
Para que não esteja familiarizado com o projeto poderá ser uma coisa simples ou mesmo estranha mas os alunos da UEEA estão a utilizar novas tecnologias de forma interativa e sentem-se integrados. Os alunos podem agora utilizar o cartão de aluno para se identificarem perante o QADE (Quadro de Atividade Diárias Eletrónico) para verem qual a tarefa seguinte que devem realizar. O docente tem assim uma forma de utilizar a tecnologia, tão importante no presente.
O projeto será especificado e divulgado de forma livre no blog nas próximas semanas, mas podemos já adiantar a lista genérica de equipamentos utilizados:
Sigam o blog.
beatty-robotics.com/laser-tank-base-work-in-process/
Vamos tentar criar as esteiras com correias de sincronização duplas.
www.pinterest.pt/pin/160792649178761931/
Finalmente dominamos os Fritzing.
// #######################################################
#define maxTeclas 20
// #######################################################
int switchPinB = 41;
int switchPinA = 43;
int switchPinC = 45;
// ——————————————————-
int switchPinE = 47;
int switchPinX = 49;
// ——————————————————-
int delayToque = 300;
// #######################################################
char sequencia[maxTeclas];
void leTeclas(){
// ——————————————————-
int aceitaTeclas = true;
int contaTeclas=0;
sequencia[contaTeclas]=0;
Serial.println(“Nova sequencia”);
do{
// TECLA A
if(digitalRead(switchPinA) == LOW) {
Serial.print(“A”);
sequencia[contaTeclas]=’A’;
contaTeclas++;
sequencia[contaTeclas]=0;
delay(delayToque);
}
// TECLA B
if(digitalRead(switchPinB) == LOW) {
Serial.print(“B”);
sequencia[contaTeclas]=’B’;
contaTeclas++;
sequencia[contaTeclas]=0;
delay(delayToque);
}
// TECLA C
if(digitalRead(switchPinC) == LOW) {
Serial.print(“C”);
sequencia[contaTeclas]=’C’;
contaTeclas++;
sequencia[contaTeclas]=0;
delay(delayToque);
}
// TECLA ENTER
if(digitalRead(switchPinE) == LOW) {
Serial.println(“”);
Serial.println(“Enter”);
Serial.println(“”);
delay(delayToque);
aceitaTeclas=false;
}
// TECLA X – ESC
if(digitalRead(switchPinX) == LOW) {
Serial.println(“”);
Serial.println(“X – ESC”);
Serial.println(“”);
Serial.println(“Nova sequencia LIMPA”);
aceitaTeclas = true;
contaTeclas=0;
sequencia[contaTeclas]=0;
delay(delayToque);
}
// MAXIMO DE TECLAS LIDO
if(contaTeclas==maxTeclas){
aceitaTeclas=false;
}
}while(aceitaTeclas==true);
}
// #######################################################
void imprimeSequencia(){
// ——————————————————-
int contaTeclas=0;
contaTeclas = strlen(sequencia);
Serial.print(“Sequencia gravada com “);
Serial.print(contaTeclas);
Serial.println(” instrucoes.”);
Serial.print(“## “);
for(int i=0; i<contaTeclas;i++){
Serial.print(sequencia[i]);
if(i<contaTeclas-1) {
Serial.print(“,”);
}
}
Serial.println(” ##”);
Serial.println(“”);
}
// #######################################################
void setup() {
// ——————————————————-
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(switchPinB, INPUT_PULLUP);
pinMode(switchPinA, INPUT_PULLUP);
pinMode(switchPinC, INPUT_PULLUP);
pinMode(switchPinE, INPUT_PULLUP);
pinMode(switchPinX, INPUT_PULLUP);
}
// #######################################################
void loop() {
// ——————————————————-
// put your main code here, to run repeatedly:
leTeclas();
// executa sequencia
imprimeSequencia();
}