Мне не хватает "материала" в моем коде, и я не понимаю - PullRequest
0 голосов
/ 23 марта 2020

Я новичок ie в кодировании и в последние несколько дней я пытался заставить сервопривод поворачиваться на 180 градусов, набрав 1 в приложении на моем телефоне, подключенном к модулю Bluetooth H C 05 , Когда я набираю один, сервопривод поворачивается на 180 градусов, когда я набираю 0, сервопривод вращается на 180 градусов в другую сторону. Это то, что я сделал до сих пор, комбинируя биты разных кодов. Можете ли вы помочь решить, что не так? (Я действительно не понимаю) Вот код:

 #include <Servo.h>
 char data = 0; 
 int pos = 0;      
 Servo servo;

 void setup() 
 {
 servo.attach(9);
 }

 void loop(){
 data = Serial.read();      
 Serial.print(data);     
 Serial.print("\n");         
 if(data == '1')            
 digitalWrite(pos = 0; pos <= 180; pos += 1) {
 servo.write(pos);              
 delay(15); 

else if(data == '0')
digitalWrite(pos = 180; pos >= 0; pos -= 1) { 
servo.write(pos);              
delay(15);
}
}

Спасибо за ваше время!

PS: пожалуйста, прости орфографические ошибки

1 Ответ

0 голосов
/ 24 марта 2020

Возможно, вы хотите что-то вроде этого:

#include <Servo.h>

int data = 0;
int pos = 0;

int degrees = 30;
//int degrees = 180;

Servo servo;

void setup()
{
    Serial.begin(9600);
    servo.attach(9);
}

void loop(){

    if (Serial.available() > 0) {

        data = Serial.read();
        Serial.println(data);

        if(data == '1') {
            for (pos = 0; pos <= degrees; pos++) {
                servo.write(pos);
                delay(15);
            }
        }
        else if(data == '0') {
            for (pos = degrees; pos >= 0; pos--) {
                servo.write(pos);
                delay(15);
            }
        }
    }
}

Попробуйте сначала с 30 градусами, поскольку не все сервоприводы поддерживают 180 градусов.

...