collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda a programar arduino  (Lida 7140 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline The Wolfman

  • Mini Robot
  • *
  • Mensagens: 60
Re: Ajuda a programar arduino
« Responder #15 em: 04 de Maio de 2010, 23:53 »
Bem, por hoje fico assim. Amanhã vou testar :D
Código: [Seleccione]
int duration_frt;                         
int distance_frt;                         
int srf_frt = 4;

int duration_esq;
int distance_esq;
int srf_esq = 5;

int duration_dir;
int distance_dir;
int srf_dir = 6;

int ldr = 0;
int valor_ldr = 5;
int led_ldr = 13;

int motor_esq[] = {2, 3};
int motor_dir[] = {7,8};
int i;

int led_vitima = 12;

void setup(){
Serial.begin(9600);

for(i = 0; i < 2; i++){
  pinMode(motor_esq[i], OUTPUT);
  pinMode(motor_dir[i], OUTPUT);
}

}

void loop(){
  pinMode(srf_frt, OUTPUT);
  digitalWrite(srf_frt, LOW);         
  delayMicroseconds(2);
  digitalWrite(srf_frt, HIGH);         
  delayMicroseconds(10);
  digitalWrite(srf_frt, LOW);           
  pinMode(srf_frt, INPUT);
  duration_frt = pulseIn(srf_frt, HIGH);   
  distance_frt = duration_frt/58;

  pinMode(srf_esq, OUTPUT);
  digitalWrite(srf_esq, LOW);
  delayMicroseconds(2);
  digitalWrite(srf_esq, HIGH);
  delayMicroseconds(10);
  digitalWrite(srf_esq, LOW);
  pinMode(srf_esq, INPUT);
  duration_esq = pulseIn(srf_esq, HIGH);
  distance_esq = duration_esq/58;

  pinMode(srf_dir, OUTPUT);
  digitalWrite(srf_dir, LOW);
  delayMicroseconds(2);
  digitalWrite(srf_dir, HIGH);
  delayMicroseconds(10);
  digitalWrite(srf_dir, LOW);
  pinMode(srf_dir, INPUT);
  duration_dir = pulseIn(srf_dir, HIGH);
  distance_dir = duration_dir/58;

  digitalWrite(motor_esq[0], HIGH); 
  digitalWrite(motor_esq[1], LOW);
 
  digitalWrite(motor_dir[0], HIGH);
  digitalWrite(motor_dir[1], LOW);
 
  ldr = analogRead(valor_ldr);
  digitalWrite(led_ldr, HIGH);
  digitalWrite(led_vitima, LOW);
 
  if (ldr > 500)
{
  pinMode(led_vitima, OUTPUT);
  digitalWrite(led_vitima, HIGH); 
}

  if (distance_frt <= 4)
{
  digitalWrite(motor_esq[0], LOW);
  digitalWrite(motor_esq[1], LOW);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], LOW);
 
  delay(1000);
 
  digitalWrite(motor_esq[0], LOW); 
  digitalWrite(motor_esq[1], HIGH);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], HIGH);

  delay(1000);

  digitalWrite(motor_esq[0], LOW);
  digitalWrite(motor_esq[1], HIGH);
 
  digitalWrite(motor_dir[0], HIGH);
  digitalWrite(motor_dir[1], LOW);

  delay(1000);
}

  if (distance_frt && distance_esq <= 4)       

  digitalWrite(motor_esq[0], LOW);
  digitalWrite(motor_esq[1], LOW);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], LOW);
 
  delay(1000);
 
  digitalWrite(motor_esq[0], LOW); 
  digitalWrite(motor_esq[1], HIGH);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], HIGH);

  delay(1000);
 
  digitalWrite(motor_esq[0], HIGH);
  digitalWrite(motor_esq[1], LOW);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], HIGH);

  delay(1000);
}

  if (distance_frt && distance_dir <= 4)

  digitalWrite(motor_esq[0], LOW);
  digitalWrite(motor_esq[1], LOW);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], LOW);
 
  delay(1000);
 
  digitalWrite(motor_esq[0], LOW); 
  digitalWrite(motor_esq[1], HIGH);
 
  digitalWrite(motor_dir[0], LOW);
  digitalWrite(motor_dir[1], HIGH);

  delay(1000);
 
  digitalWrite(motor_esq[0], LOW);
  digitalWrite(motor_esq[1], HIGH);
 
  digitalWrite(motor_dir[0], HIGH);
  digitalWrite(motor_dir[1], LOW);

  delay(1000);
}
 
  Serial.println(distance_frt);
 
  delay(100);                           
}

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: Ajuda a programar arduino
« Responder #16 em: 11 de Maio de 2010, 19:40 »
Como o é que o projecto ficou?

Fotos da versão final para o pessoal e um pequeno resumo do que aprenderam!? ;D

Offline The Wolfman

  • Mini Robot
  • *
  • Mensagens: 60
Re: Ajuda a programar arduino
« Responder #17 em: 11 de Maio de 2010, 21:16 »
Sim, eu não me esqueci ;)

Eu tratei da programação ao inicio, mas um colega meu depois começou a inventar (pelo que vi dos testes dele, já misturava whiles dentro de if's) LOOL!

O que interessa é que tendo em conta os nossos contratempos, conseguimos meter o motor a funcionar.

Contratempos esses:
-2 Reguladores 7805 queimados;
-2 Pontes H SN754410NE;
-1 Picaxe 28X1;
-1 pololu TB66FNG12 (ainda estou para descobrir como aquilo se queimou --');
-1 Mini metal gearmotor 100:1 com as engrenagens rebentadas;
-Uma carrada de LED's queimados;

Especialmente devido a contratempos como ter de estar a trocar de chassis de um dia para o outro, não vou postar aqui ainda o código, visto que não está ainda tudo funcional :s

De qualquer maneira, o meu trabalho foi dos 3 melhores da escola!!!

Um amigo meu vai-me passar as fotografias TODAS do desenvolvimento do projecto e eu depois posto :D

Queria deixar aqui um agradecimento especial ao TigPT e ao Fifas porque são uns bacanos e a ajuda deles foi muito preciosa, sem a ajuda destas duas pessoas, não conseguiríamos alcançar os nossos objectivos!