Ви не увійшли.
Сторінки 1
Здравствуйте форумчане.
Очень долго мучаюсь с одним кодом
Вообщем задача следующая: Одна кнопка перемещает сервопривод по 3 положением, во время этого идёт индикация с помощью RBG, и есть управление сервоприводом с помощью потенциометра. И нужно сделать вторую кнопку, чтобы переключаться между режимами, имею ввиду нажал кнопку2 и идёт управление по 3 положением кнопкой1, ну а когда нажимаешь кнопку2 еще раз управляешь сервоприводом с помощью потенциометра.
Сейчас же это всё работает одновременно, но потенциометр поворачивается лишь когда нажмёшь на кнопку2(а нужно свободно)
Код:
#include <Servo.h>
Servo s1;
float a = 0.1759;
float k = 0.48816;
float b = - 49.76331;
int button_state = 0;
int button_pin = 10;
int servo_position = 0;
int PIN_LED_RED = 3;
int PIN_LED_GREEN = 2;
int PIN_LED_BLUE = 4;
int switch_button = 11;
const int switch_position = 0;
int switch_state = 0;
const int POT=5;
int valpot = 0;
int angleServo = 0;
void setup()
{
s1.attach(6);
Serial.begin(9600);
pinMode(6,OUTPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(PIN_LED_RED,OUTPUT);
pinMode(PIN_LED_GREEN,OUTPUT);
pinMode(PIN_LED_BLUE,OUTPUT);
}
void loop()
{
button_state = digitalRead(button_pin);
switch_state = digitalRead(switch_button);
if(switch_state == HIGH )
{
valpot = analogRead(POT);
{
angleServo=map(valpot,0,1023,0,180);
s1.write(angleServo);
delay(15);
}
}
if (button_state == HIGH ){
servo_position++;
delay(500);
if (servo_position == 3){
servo_position = 0;
}
if (servo_position == 0){
s1.write (50);
digitalWrite(PIN_LED_BLUE, 0);
digitalWrite(PIN_LED_GREEN, 1);
digitalWrite(PIN_LED_RED, 0);
}
if (servo_position == 1){
s1.write (90);
digitalWrite(PIN_LED_BLUE, 1);
digitalWrite(PIN_LED_GREEN, 0);
digitalWrite(PIN_LED_RED, 0);
}
if (servo_position == 2){
s1.write (130);
digitalWrite(PIN_LED_BLUE, 0);
digitalWrite(PIN_LED_GREEN, 0);
digitalWrite(PIN_LED_RED, 1);
}
}
}
Сторінки 1