Return to Snippet

Revision: 68317
at January 11, 2015 09:02 by agarcia


Updated Code
/* Segon repte clautic league
Fer ziga zaga a les piramides
arribar a la barca i tornar a la base
utilitzant sensor d'ultrasons
Aquesta versio amb la llibreria Ultrasonic
*/

/* Aquesta d'aquí sota és la llibreria 
dels sensor d'ultrasons comentada en el
vídeo. Per més informació: http://goo.gl/T8UESz
*/

#include <Ultrasonic.h>

// Definició dels pins dels motors
int mesq_av = 12; // Motor esquerra per endavant al pin 12
int mesq_re = 11; // Motor esquerra per enradera al pin 11
int mesq_vel = 10; // Motor esquerra control velocitat al pin PWM 10

int mdret_av = 7; // Motor dret per endavant al pin 7
int mdret_re = 6; // Motor dret per enradera al pin 6
int mdret_vel = 5; // Motor dret control velocitat al pin PWM 5

// Definició constants sensor distancia
#define Echo 8
#define Trip 9
#define Led 13

Ultrasonic ultrasonic(Trip,Echo); // (Trig PIN,Echo PIN)

long distancia,temps;

int final=0; // Per fer el loop una sola vegada
int compara;
//int contador;

void setup(){
// Activem pins dels motors com sortida
// Motor esquerra
    pinMode(mesq_vel, OUTPUT);
    pinMode(mesq_av, OUTPUT);
    pinMode(mesq_re, OUTPUT);
// Motor dret
    pinMode(mdret_vel, OUTPUT);
    pinMode(mdret_av, OUTPUT);
    pinMode(mdret_re, OUTPUT);

//    pinMode(Echo, INPUT);
//    pinMode(Trig, OUTPUT);

    pinMode(Led, OUTPUT);
    Serial.begin(9600);
}

void loop(){
  if (final==0){
    //de la base a tutankamon
    digitalWrite(Led, HIGH);
    Motors(HIGH, LOW, 235, HIGH, LOW, 255);
    delay(800); //anterior:800
//    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

    //90º tutankamon piramide 1
    Motors(HIGH, LOW, 255, HIGH, LOW, 0);
    delay(130);  //anterior:155
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

// Posem a la variable compara la distancia que dona el sensor des de la llibreria
    compara=ultrasonic.Ranging(CM);

    //mentres estigui a + de "x" cm anar endevant
    while (compara > 22 || compara ==0 ){
      digitalWrite(Led, LOW);
      Motors(HIGH, LOW, 95, HIGH, LOW, 100);
      Serial.println(compara);
      compara=ultrasonic.Ranging(CM);
    }
      digitalWrite(Led, HIGH);

    //esquivar 1a piramide primer girant a la dreta
    Motors(HIGH, LOW, 255, HIGH, LOW, 0);
    delay(140);  //anterior: 140
    //recte
    Motors(HIGH, LOW, 100, HIGH, LOW, 145);
    delay(130);//abans 150
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);
    delay(5);
    
    //i despres girant a l'esquerra
    Motors(HIGH, LOW, 0, HIGH, LOW, 250);//abans 245
    delay(420);  //anterior: 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);

// Tornem a agafar el valor de distancia i establim distancia mínima
    compara=ultrasonic.Ranging(CM);
    while (compara > 22 || compara ==0 ){
      digitalWrite(Led, LOW);
      Motors(HIGH, LOW, 85, HIGH, LOW, 110);
      compara=ultrasonic.Ranging(CM);
    }
      digitalWrite(Led, HIGH);

    //esquivar 1a piramide 2 girant esquerra
    Motors(HIGH, LOW, 0, HIGH, LOW, 255);
    delay(90);//Abans 100
    //va recte
    Motors(HIGH, LOW, 200, HIGH, LOW, 235);
    delay(140);//abans 160
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);

    // i despres a la dreta
    Motors(HIGH, LOW, 245, HIGH, LOW, 95);
    delay(450);//abans 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(150);
    // avança una mica abans de tornar a girar a l'esquerra
    Motors(HIGH, LOW, 200, HIGH, LOW, 235);//abans 140
    delay(550);//abans 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(50);
    
    // gira a l'esquerra per anar a la galera
    Motors(HIGH, LOW, 0, HIGH, LOW, 250);
    delay(300);
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);
    
    // avança cap a la barca
    Motors(HIGH, LOW, 255, HIGH, LOW, 255);
    delay(750);
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);
   
   
    // torna a la base d'esquena
    Motors(LOW, HIGH, 245, LOW, HIGH, 250);
    delay(2000);
  
    // i es para el motor
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

    // es suma final, per no tornar a executar el bucle
    final++;
  }
}

//FUNCIONS
void Motors (char me_avan, char me_retr, int me_vel, char md_avan, char md_retr, int md_vel)
{
// Motor esquerra endavant o enrradera
  digitalWrite (mesq_av, me_avan);
  digitalWrite (mesq_re, me_retr);
// Motor dret endavant o enrradera
  digitalWrite (mdret_av, md_avan);
  digitalWrite (mdret_re, md_retr);
// Velocitat als motors
  analogWrite (mesq_vel, me_vel);
  analogWrite (mdret_vel, md_vel);
}

Revision: 68316
at December 30, 2014 23:00 by agarcia


Initial Code
/* Segon repte clautic league
Fer ziga zaga a les piramides
arribar a la barca i tornar a la base
utilitzant sensor d'ultrasons
Aquesta versio amb la llibreria Ultrasonic
*/

#include <Ultrasonic.h>

// Definició dels pins dels motors
int mesq_av = 12; // Motor esquerra per endavant al pin 12
int mesq_re = 11; // Motor esquerra per enradera al pin 11
int mesq_vel = 10; // Motor esquerra control velocitat al pin PWM 10

int mdret_av = 7; // Motor dret per endavant al pin 7
int mdret_re = 6; // Motor dret per enradera al pin 6
int mdret_vel = 5; // Motor dret control velocitat al pin PWM 5

// Definició constants sensor distancia
#define Echo 8
#define Trip 9
#define Led 13

Ultrasonic ultrasonic(Trip,Echo); // (Trig PIN,Echo PIN)

long distancia,temps;

int final=0; // Per fer el loop una sola vegada
int compara;
//int contador;

void setup(){
// Activem pins dels motors com sortida
// Motor esquerra
    pinMode(mesq_vel, OUTPUT);
    pinMode(mesq_av, OUTPUT);
    pinMode(mesq_re, OUTPUT);
// Motor dret
    pinMode(mdret_vel, OUTPUT);
    pinMode(mdret_av, OUTPUT);
    pinMode(mdret_re, OUTPUT);

//    pinMode(Echo, INPUT);
//    pinMode(Trig, OUTPUT);

    pinMode(Led, OUTPUT);
    Serial.begin(9600);
}

void loop(){
  if (final==0){
    //de la base a tutankamon
    digitalWrite(Led, HIGH);
    Motors(HIGH, LOW, 235, HIGH, LOW, 255);
    delay(800); //anterior:800
//    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

    //90º tutankamon piramide 1
    Motors(HIGH, LOW, 255, HIGH, LOW, 0);
    delay(130);  //anterior:155
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

// Posem a la variable compara la distancia que dona el sensor des de la llibreria
    compara=ultrasonic.Ranging(CM);

    //mentres estigui a + de "x" cm anar endevant
    while (compara > 22 || compara ==0 ){
      digitalWrite(Led, LOW);
      Motors(HIGH, LOW, 95, HIGH, LOW, 100);
      Serial.println(compara);
      compara=ultrasonic.Ranging(CM);
    }
      digitalWrite(Led, HIGH);

    //esquivar 1a piramide primer girant a la dreta
    Motors(HIGH, LOW, 255, HIGH, LOW, 0);
    delay(140);  //anterior: 140
    //recte
    Motors(HIGH, LOW, 100, HIGH, LOW, 145);
    delay(130);//abans 150
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);
    delay(5);
    
    //i despres girant a l'esquerra
    Motors(HIGH, LOW, 0, HIGH, LOW, 250);//abans 245
    delay(420);  //anterior: 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);

// Tornem a agafar el valor de distancia i establim distancia mínima
    compara=ultrasonic.Ranging(CM);
    while (compara > 22 || compara ==0 ){
      digitalWrite(Led, LOW);
      Motors(HIGH, LOW, 85, HIGH, LOW, 110);
      compara=ultrasonic.Ranging(CM);
    }
      digitalWrite(Led, HIGH);

    //esquivar 1a piramide 2 girant esquerra
    Motors(HIGH, LOW, 0, HIGH, LOW, 255);
    delay(90);//Abans 100
    //va recte
    Motors(HIGH, LOW, 200, HIGH, LOW, 235);
    delay(140);//abans 160
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);

    // i despres a la dreta
    Motors(HIGH, LOW, 245, HIGH, LOW, 95);
    delay(450);//abans 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(150);
    // avança una mica abans de tornar a girar a l'esquerra
    Motors(HIGH, LOW, 200, HIGH, LOW, 235);//abans 140
    delay(550);//abans 400
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(50);
    
    // gira a l'esquerra per anar a la galera
    Motors(HIGH, LOW, 0, HIGH, LOW, 250);
    delay(300);
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);
    
    // avança cap a la barca
    Motors(HIGH, LOW, 255, HIGH, LOW, 255);
    delay(750);
    Motors(LOW, LOW, 0, LOW, LOW, 0);
    delay(100);
   
   
    // torna a la base d'esquena
    Motors(LOW, HIGH, 245, LOW, HIGH, 250);
    delay(2000);
  
    // i es para el motor
    Motors(HIGH, LOW, 0, HIGH, LOW, 0);

    // es suma final, per no tornar a executar el bucle
    final++;
  }
}

//FUNCIONS
void Motors (char me_avan, char me_retr, int me_vel, char md_avan, char md_retr, int md_vel)
{
// Motor esquerra endavant o enrradera
  digitalWrite (mesq_av, me_avan);
  digitalWrite (mesq_re, me_retr);
// Motor dret endavant o enrradera
  digitalWrite (mdret_av, md_avan);
  digitalWrite (mdret_re, md_retr);
// Velocitat als motors
  analogWrite (mesq_vel, me_vel);
  analogWrite (mdret_vel, md_vel);
}

Initial URL


Initial Description
Codi repte 2 ClauTic league

Initial Title
Task 2, ClauTIC League, by MadTeam

Initial Tags


Initial Language
Processing