The servo works smoothly with the data coming from the serial port, but when I press the button it does not work, but when it remains pressed it works and the servo returns to 0.
#include <Servo.h>
Servo motor;
#define button 4
long randNumber;
void setup() {
Serial.begin(9600);
motor.attach(5);
pinMode(button,INPUT);
}
void loop() {
if (randNumber == 0 ){
if (digitalRead(button ) == LOW){
motor.write(0);
}}
if (randNumber == 1 ){
if (digitalRead(button ) == LOW){
motor.write(0);
}}
byte x = Serial.parseInt();
if(x==1){
randNumber = random(2);
if (randNumber == 0 ){
motor.write(90);
}
if (randNumber == 1 ){
motor.write(90);
}
}
Your code spends most of it's time in Serial.parseInt(), waiting for a character; after a second, it times out and returns 0, does a pass around the loop(), and re-enters Serial.parseInt(), where it waits for another second.
When data comes from the serial port, it is 90 degrees. When I press the button, it does not return to 0, but when the button is pressed for a long time, it returns to 0.
welcome to the arduino forum.
The arduino-forum can be of great help if you do it in a certain way.
Here is some very good help. Written in the languaga urdu
Use google translate to translate it into your native language.
Do me a favor and try google translate
click on the triangle to open the text
تو بس گوگل ٹرانسلیٹ کا استعمال کریں۔ اپنی مادری زبان میں لکھیں اور گوگل کو ترجمہ کرنے دیں۔
یہ ایک ابتدائی کے طور پر بہت عام ہے کہ آپ تمام افعال کے بارے میں تمام تفصیلات نہیں جانتے ہیں۔
آپ کے کوڈ میں جو کچھ ہوتا ہے وہ کسی ایسی چیز کی وجہ سے ہوتا ہے جسے آپ ابھی تک نہیں جانتے ہیں۔
یہی وجہ ہے کہ آپ کو عام الفاظ میں بیان کرنا چاہیے۔
تمام پروگرامنگ الفاظ سے گریز کرتے ہوئے جو آپ کوڈ سے کرنا چاہتے ہیں۔
اس تفصیل کے ساتھ صارفین کو ایک واضح تصویر ملے گی کہ آپ کا کوڈ کیا کرے گا۔
آپ کے ابھی تک غیر فعال کوڈ کو دیکھنے سے کہیں زیادہ واضح تصویر