أول مرة هنا ؟ تفحص قواعد المشاركة و معلومات أخرى عن عرب overflow!
x

اريد تطوير روبوت من متبع خطوط الى متبع خطوط ويتفادى الحواجز اضافة UltraSon

+2 صوت
239 مشاهدات

    int IN1=3;
    int IN2=5;
    int IN3=6;
    int IN4=9;
    int ledPin = 13;
    int capteurgauche = 7; 
    int capteurcentre = 2; 
    int capteurdroite = 4; 
    int gauche;
    int droite;
    int centre;
    int valor1 = 0;
void setup (){
       Serial.begin(9600);
       pinMode(IN1,OUTPUT);
       pinMode(IN4,OUTPUT);
       pinMode(IN2,OUTPUT); 
       pinMode(IN3,OUTPUT);
       pinMode(capteurgauche,INPUT);
       pinMode(capteurcentre,INPUT);
       pinMode(capteurdroite,INPUT);
       Serial.println("Robot initialize");
}
void marche_avant(){
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    delay(50);
}
void marche_arriere(){
     digitalWrite(IN1,HIGH);
     digitalWrite(IN2,HIGH);
     digitalWrite(IN3,HIGH);
     digitalWrite(IN4,HIGH);
     delay(50);
    }
void left(){
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,HIGH);
    delay(50);}
void right(){
      digitalWrite(IN1,HIGH);
      digitalWrite(IN2,HIGH);
      digitalWrite(IN3,HIGH);
      digitalWrite(IN4,LOW);
      delay(50);
}
void STOP(){
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,LOW);
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,LOW);
      delay(50);
}   
void lecture_capteur () 
{ 
  // noir = false, blanc = true 
  gauche = digitalRead(capteurgauche); 
  centre = digitalRead(capteurcentre); 
  droite = digitalRead(capteurdroite); 
}


void loop (){
  lecture_capteur();
        if (centre == HIGH)
            {
              marche_avant();
              delay(50);
              } 
        if (gauche == HIGH)
            {
              left();
              delay(50);
              }
        if (droite == HIGH)
            {
              right();
              delay(50);
              } 

        else     
             {
               STOP();
               delay(50);
              }  
  lecture_capteur();

      }
الرجاء , ان تشرح أكثر عن الموضوع و السؤال و الكود المتواجد و نوعية الحساسات المستخدمة .. حتى نتمكن من مساعدتك !

إجابة واحدة

+2 صوت

 
أفضل إجابة

الي انا فاهمه ان ال SR-04 Ultrasonic module
كل الي بتعمله انها بتبعت رقم للاردوينو
الرقم دا بيعبر عن مسافه
كل ما يصغر ما تعرف انك بتقرب من obstacle
المفروض انتا بشكل ما تجيب الرقم اقرا اكتر عن ال library بتاعه ال ultrasonic او شوف انتا تعرف تعمل library ولا لا
لنفترض ان الرقم الي بيعبر عن مسافه دا انتا هتسجله ك integer

int theUltrasonicRead;
theUltrasonicRead = readMyUltrasonic();       /* where read readMyUltrasonic is some function that returns number representing a distance*/ 
if(theUltrasonicRead <19)
STOP();

19 دا اي رقم
الارقام الي بتقراها بتكون بال cm
يعني الموضوع كله رقم بيعبر عن مسافه و انتا بتحدد هتعمل ايه لو الرقم دا صغر
يا رب اكون فهمت سؤالك صح

...