1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: arduino小車控制程序,包含與樹莓派通信程序 [打印本頁]

作者: 16271271    時間: 2018-10-2 19:31
標題: arduino小車控制程序,包含與樹莓派通信程序
小車控制程序,包含與樹莓派通信程序


單片機源程序如下:

  1. int PWMA=10;
  2. int IN1 = 10;
  3. int IN2 = 9;
  4. int PWMB = 6;
  5. int IN3 = 6;
  6. int IN4 = 5;
  7. const int TrigPin = 2;
  8. const int EchoPin = 3;
  9. float distance;
  10. #include <Servo.h>    // 聲明調用Servo.h庫
  11. Servo myservo;        // 創建一個舵機對象
  12. int pos = 0;          // 變量pos用來存儲舵機位置
  13. String comdata = "";
  14. int i;

  15. void setup()
  16. {
  17.   pinMode(PWMA, OUTPUT); //PWM
  18.   pinMode(IN1, OUTPUT);
  19.   pinMode(IN2, OUTPUT);
  20.   pinMode(PWMB, OUTPUT); //PWM
  21.   pinMode(IN3, OUTPUT);
  22.   pinMode(IN4, OUTPUT);
  23.   // 初始化串口通信及連接SR04的引腳
  24.         Serial.begin(9600);
  25.         pinMode(TrigPin, OUTPUT);
  26.     // 要檢測引腳上輸入的脈沖寬度,需要先設置為輸入狀態
  27.         pinMode(EchoPin, INPUT);
  28.     Serial.println("Ultrasonic sensor:");
  29.   myservo.attach(5);  // 將引腳9上的舵機與聲明的舵機對象連接起來
  30.   Serial.begin(9600);
  31. }

  32. void up()
  33. {
  34.   digitalWrite(IN1, LOW);
  35.   digitalWrite(IN2, HIGH);
  36.   digitalWrite(IN3, LOW);
  37.   digitalWrite(IN4, HIGH);
  38.   analogWrite(PWMA, 10);
  39.   analogWrite(PWMB, 10);
  40.   delay(5000);
  41. }

  42. void down()
  43. {
  44.   digitalWrite(IN1, HIGH);
  45.   digitalWrite(IN2, LOW);
  46.   digitalWrite(IN3, HIGH);
  47.   digitalWrite(IN4, LOW);
  48.   analogWrite(PWMA, 10);
  49.   analogWrite(PWMB, 10);
  50.   delay(5000);
  51. }

  52. void sto()
  53. {
  54.   digitalWrite(IN1, LOW);
  55.   digitalWrite(IN2, LOW);
  56.   digitalWrite(IN3, LOW);
  57.   digitalWrite(IN4, LOW);
  58.   analogWrite(PWMA, 0);
  59.   analogWrite(PWMB, 0);
  60.   delay(5000);
  61. }

  62. void left()
  63. {
  64.   digitalWrite(IN1, LOW);
  65.   digitalWrite(IN2, HIGH);
  66.   digitalWrite(IN3, HIGH);
  67.   digitalWrite(IN4, LOW);
  68.   analogWrite(PWMA, 10);
  69.   analogWrite(PWMB, 10);
  70.   delay(5000);
  71. }

  72. void right()
  73. {
  74.   digitalWrite(IN1, HIGH);
  75.   digitalWrite(IN2, LOW);
  76.   digitalWrite(IN3, LOW);
  77.   digitalWrite(IN4, HIGH);
  78.   analogWrite(PWMA, 10);
  79.   analogWrite(PWMB, 10);
  80.   delay(5000);
  81. }

  82. void d()
  83. {
  84.     // 產生一個10us的高脈沖去觸發TrigPin
  85.         digitalWrite(TrigPin, LOW);
  86.         delayMicroseconds(2);
  87.         digitalWrite(TrigPin, HIGH);
  88.         delayMicroseconds(10);
  89.         digitalWrite(TrigPin, LOW);
  90.     // 檢測脈沖寬度,并計算出距離
  91.         distance = pulseIn(EchoPin, HIGH) / 58.00;
  92.         
  93. }

  94. void roun()
  95. {
  96.    for(pos = 0; pos < 180; pos += 1){    // 舵機從0°轉到180°,每次增加1°         
  97.       myservo.write(pos);           // 給舵機寫入角度   
  98.       delay(15);                    // 延時15ms讓舵機轉到指定位置
  99.    }
  100.     for(pos = 180; pos>=1; pos-=1) {    // 舵機從180°轉回到0°,每次減小1°                              
  101.        myservo.write(pos);        // 寫角度到舵機     
  102.        delay(15);                 // 延時15ms讓舵機轉到指定位置
  103.     }
  104. }

  105. void loop()
  106. {
  107. d();
  108.   while (Serial.available() > 0){
  109.         comdata += char(Serial.read());
  110.         i=comdata.toInt();//每次讀一個char字符,并相加
  111.         delay(2);
  112.     }
  113.     if (comdata.length() > 0){
  114.         if (i<140){
  115.           Serial.println("left");
  116.            left();
  117.         }
  118.         if(i>140&i<180){
  119.           Serial.println("up");
  120.           if(distance<30)
  121.           sto();
  122.           else
  123.           up();
  124.          
  125.         }
  126.         if (i>=180){
  127.           Serial.println("right");
  128.            right();
  129.         }
  130.        // Serial.println(i); //打印接收到的字符
  131.         comdata = "";
  132.     }
  133.    
  134. }

復制代碼

所有資料51hei提供下載:
arduino.rar (13.71 KB, 下載次數: 18)







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1