Fórum


Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
jiraya.crip

Level 0
40277 xp

Registrado em:
19/10/2022





Mensagens:
2
3
jiraya.crip

Responder com citações
Mensagem Dom Out 23, 2022 3:05 pm
Robô Anti-colisão
Olá,
Meu no é Pedo Ivo, 
Sou professor na Rede Estaudal de ensino e junto com meus alunos estamos montando um Robo Anti-Colisão.

Juntos escrevemos um codigo, porem a leitura do senso ultrasonico me parece lenta.
contei uns 3 segundos até que o Robô desligue os motores e perceba que ja bateu na parede. 
É um Robô com uma tela LCD e um Buzer.

Alguem pode revisar e me ajudar nesse codigo?

TAB1

#include <FalconRobot.h>
FalconRobotMotors motors(5, 7, 6, Cool;
FalconRobotDistanceSensor distanceSensor(2, 3);
#define DISTANCETHRESHOLD 20 // cm - Set to any number from 2 - 400.

#define speakerPin 3
#define ledPin 13


#include <LiquidCrystal.h> // inclui a biblioteca para uso do Display LCD
// inicializa um objeto nos pinos para acesso as funções do LCD
const int RS = 12, EN = 11, D4 = 10, D5 = 9, D6 = 8, D7 = 7;
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);

int distance;  // variable to store the distance value

void setup() {

  pinMode(speakerPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  randomSeed(analogRead(0));
  Serial.begin(9600);

   // Configura o LCD com os número de colunas e linhas
  lcd.begin(16, 2); // 16 colunas e 2 linhas

  lcd.setCursor(4, 0); // (coluna 0, linha 0)
  lcd.print(" <(+_+)>");
  lcd.setCursor(5, 1);
  lcd.print("2 Ano A");
  delay(3000);
  lcd.clear();
  lcd.setCursor(3, 0);
  lcd.print("OLA, ALUNO"); // Imprime mensagem
  delay(1500);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("SOU O PIPOPO1!");
  delay(2500);
  lcd.clear();
  lcd.setCursor(2, 0);
  lcd.print("UMA PERGUNTA?");
  delay(1500);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("QUANTAS VEZES");
  lcd.setCursor(3, 1);
  lcd.print("EU POSSO");
  delay(2000);
  lcd.clear();
  lcd.setCursor(2, 0);
  lcd.print("SUBITRAIR 10");
  lcd.setCursor(5, 1);
  lcd.print("DE 100?");
  delay(12000); //subir para 15000
  lcd.clear();
  lcd.setCursor(3, 0);
  lcd.print("APENAS UMA,");
  delay(1500);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("PORQUE DEPOIS");
  lcd.setCursor(2, 1);
  lcd.print("100 VIRA 90");
  delay(1500);
  lcd.clear();
  lcd.setCursor(4, 0);
  lcd.print("<(0   0)>");
  lcd.setCursor(7, 2);
  lcd.print("___");
  distanceSensor.read();

}

extern void loop();

TAB2 

extern void phrase1();
extern void phrase2();

void loop() {


  distance = distanceSensor.read();


  if (distance <= DISTANCETHRESHOLD) {  // The obstacle is really very close
    motors.stop();                      //adicionado para teste
    reverse();                          // backs up
    turnRight();                        // Can be replaced by  turnLeft();

    lcd.clear();
    lcd.setCursor(1, 0);
    lcd.print("AAAAAAAAAAAAA");
    delay(500);
    distanceSensor.read();
    lcd.clear();
    lcd.print("LA VAMOS NOS");
    delay(1000);
    lcd.clear();
    distanceSensor.read();
    lcd.setCursor(3, 0);
    lcd.print("<(0   0)>");
    lcd.setCursor(6, 2);
    lcd.print("___");

  } else {  // otherwise, go forward
    motors.drive(50, FORWARD);
    distanceSensor.read();
  }

  delay(10);  // delay to wait sensor reading, suggested by datasheet


  int K = 2000;
  switch (random(1, 7)) {

    case 1: phrase1(); break;
    case 2: phrase2(); break;
    case 3:
      phrase1();
      phrase2();
      break;
      distanceSensor.read();
    case 4:
      phrase1();
      phrase2();
      phrase1();
      break;
      distanceSensor.read();
    case 5:
      phrase1();
      phrase2();
      phrase1();
      phrase2();
      phrase1();
      break;
      distanceSensor.read();
    case 6:
      phrase2();
      phrase1();
      phrase2();
      break;
      distanceSensor.read();
  }
  for (int i = 0; i <= random(3, 9); i++) {

    digitalWrite(ledPin, HIGH);
    tone(speakerPin, K + random(-1700, 2000));
    delay(random(70, 170));
    digitalWrite(ledPin, LOW);
    noTone(speakerPin);
    delay(random(0, 30));
    distanceSensor.read();
  }
  noTone(speakerPin);
  delay(random(2000, 4000));

}

extern void reverse();
extern void turnRight();
extern void turnLeft();

TAB3

void phrase1() {
    distanceSensor.read();
    int k = random(1000,2000);
    digitalWrite(ledPin, HIGH);
    for (int i = 0; i <=  random(100,2000); i++){
        
        tone(speakerPin, k+(-i*2));          
        delay(random(.9,2));             
    } 
    digitalWrite(ledPin, LOW);   
    for (int i = 0; i <= random(100,1000); i++){
        
        tone(speakerPin, k + (i * 10));          
        delay(random(.9,2));             
    } 
}

void phrase2() {
    distanceSensor.read();
    int k = random(1000,2000);
    digitalWrite(ledPin, HIGH);  
    for (int i = 0; i <= random(100,2000); i++){
        
        tone(speakerPin, k+(i*2));          
        delay(random(.9,2));             
    } 
    digitalWrite(ledPin, LOW);   
    for (int i = 0; i <= random(100,1000); i++){
        
        tone(speakerPin, k + (-i * 10));          
        delay(random(.9,2));             
    } 
}

TAB4

// reverse() function -- backs up at full power
void reverse() {
  motors.stop();
  delay(250);  // short delay to let robot fully stop
  motors.drive(50, BACKWARD);
  delay(250);
  motors.stop();
  delay(250);  // short delay to let robot fully stop
}

// turnRight() function -- turns FalconRobot to the Right
void turnRight() {
  motors.leftDrive(50, FORWARD);  // spin CCW
  motors.rightDrive(50, BACKWARD); // spin CCW
  delay(300);
  motors.stop();
  delay(250);  // short delay to let robot fully stop
}

// turnLeft() function -- turns FalconRobot to the Left
void turnLeft() {
  motors.leftDrive(50, BACKWARD);  // spin CW
  motors.rightDrive(50, FORWARD); // spin CW
  delay(250);
  motors.stop();
  delay(250);  // short delay to let robot fully stop
}
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group