Нужна помощь по вращению сервопривода

Итоговый код покажите ?

Servo servo1;
const int pinServo=6; // Пин для подключения сервопривода
const int POT=5; //Аналоговый вход A3 фоторезистора
int valres = 0; // переменная для хранения значения фоторезистора
int angleServo = 45; // переменная для хранения угла поворота сервы
void setup()
{ 
 // подключить переменную servo к выводу pinServo
servo1.attach(pinServo);
Serial.begin(9600);
}
void loop()
{
valres = analogRead(POT); //чтение данных фоторезистора
Serial.println(valres); // Печать на терминал значения с аналогового
angleServo=map(valres,850, 1023, 0, 90);
// поворот сервопривода на полученый угол
servo1.write(angleServo);
delay(1500); //пауза для ажидания поворота сервопривода;

{
valres = analogRead(POT); //чтение данных фоторезистора
Serial.println(valres); // Печать на терминал значения с аналогового
angleServo=map(valres,850, 1023, 0, 90);
// поворот сервопривода на полученый угол
servo1.write(-angleServo);
delay(1500); //пауза для ажидания поворота сервопривода;
}
}

@Bender1980 , что-то у Вас по-русски и на Си написано совершенно разное.
Как написано, так, естественно, и работает.

Вот поэтому прошу помощи поправить данный код. Так как тыкаю все наугад черпая инфу с инета.

Напишите подробно по-русски, как должно работать, а потом просто переведите на Си.

Да уж))))

Не проверял. Если что, разберётесь, “допилите”…))

void loop()
{
  const int threshold = 20; //порог срабатывания датчика
  static byte on_stat = 0; //счёчик статуса срабатываний

  valres = analogRead(POT); //чтение данных фоторезистора
  Serial.println(valres); // Печать на терминал значения с аналогового

  if (valres > threshold && on_stat == 0) {
    servo1.write(45);
    on_stat = 1;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }
  if (valres <= threshold && on_stat == 1) {
    servo1.write(-45);
    on_stat = 2;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }

  if (valres > threshold && on_stat == 2) {
    servo1.write(-45);
    on_stat = 3;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }
  if (valres <= threshold && on_stat == 3) {
    servo1.write(45);
    on_stat = 0;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }
}
2 лайка

Огромное спасибо!!!
Немного подправил и ву-аля!!!

{
  const int threshold = 70; //порог срабатывания датчика
  static byte on_stat = 0; //счёчик статуса срабатываний

  valres = analogRead(POT); //чтение данных фоторезистора
  Serial.println(valres); // Печать на терминал значения с аналогового

  if (valres > threshold && on_stat == 0) {
    servo1.write(90);
    on_stat = 1;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }
  if (valres <= threshold && on_stat == 1) {
    servo1.write(125);
    on_stat = 2;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }

  if (valres > threshold && on_stat == 2) {
    servo1.write(90);
    on_stat = 3;
    delay(1500); //пауза для ажидания поворота сервопривода;
  }
  if (valres <= threshold && on_stat == 3) {
    servo1.write(45);
    on_stat = 4;
    delay(1500); //пауза для ажидания поворота сервопривода;
     }
  if (valres > threshold && on_stat == 4) {
    servo1.write(90);
    on_stat = 0;
    delay(1500); //пауза для ажидания поворота сервопривода;

     }
}

Спасибо всем кто оказал помощь!!! :grinning: :grinning: :grinning: :grinning: :grinning:

Вечер добрый. Нужна ваша помощь, Вы мне очень сильно помогли в написание скетча для arduino, использую его успешно в своих моделях как шаблон, но обстоятельства привели к использованию stm8s103 ввиду его дешевизны и габаритности, если вас не затруднит снова помочь поправить его для залития в данный контролер.

Servo servo1;
const int pinServo=6; // Пин для подключения сервопривода
const int POT=5; //Аналоговый вход A3 фоторезистора
int valres = 0; // переменная для хранения значения фоторезистора
int angleServo = 45; // переменная для хранения угла поворота сервы
void setup()
{
// подключить переменную servo к выводу pinServo
servo1.attach(pinServo);
Serial.begin(9600);
}
void loop()
{
const int threshold = 70; //порог срабатывания датчика
static byte on_stat = 0; //счёчик статуса срабатываний

valres = analogRead(POT); //чтение данных фоторезистора
Serial.println(valres); // Печать на терминал значения с аналогового

if (valres > threshold && on_stat == 0) {
servo1.write(90);
on_stat = 1;
delay(1500); //пауза для ажидания поворота сервопривода;
}
if (valres <= threshold && on_stat == 1) {
servo1.write(125);
on_stat = 2;
delay(1500); //пауза для ажидания поворота сервопривода;
}

if (valres > threshold && on_stat == 2) {
servo1.write(90);
on_stat = 3;
delay(1500); //пауза для ажидания поворота сервопривода;
}
if (valres <= threshold && on_stat == 3) {
servo1.write(45);
on_stat = 4;
delay(1500); //пауза для ажидания поворота сервопривода;
}
if (valres > threshold && on_stat == 4) {
servo1.write(90);
on_stat = 0;
delay(1500); //пауза для ажидания поворота сервопривода;

}

че, в этот раз не прокатило?

Как я понял его надо править под контролер stm8s103, он компелируется

боюсь, править надо изначально схему, а не код.

Подключение я подправлю вкоде. А вот сам код не але.

код настолько примитивен, что там и править нечего, пин сервы и фоторезистора, тока на стм8 надо понимать какие пины использовать можно.
и тут видимо ваше

не сработает.

В библиотеке stm есть примеры брал подключение за основу. В примере есть скетч где серва вращаеться от потенциометра вместо него ставил опрное сопротивление и фоторезистор работает но только в одну сторону и то не стабильно от чувствительности фоторезтора дергается серва.

Увы , не помогу. С STM пока дела не имел, от слова “совсем” - зелёный ещё)))

Спасибо, что ответили, а не подскажите к кому на форуме можно обратится за помощью?

Я думаю, кто захочет, сам увидит и поможет

Так же есть ещё платный раздел “Ищу исполнителя”.

Спасибо за подсказку.!!!

Немного глянул про STM8, его аддон в ардуино вроде как не поддерживает С++, а значит и библиотека работать не будет. Возможно ошибаюсь.
Вообще, чем компилируете?

P.S. Это не про то ,что невозможно сделать, просто немного сложнее будет, “вручную”, без библиотеки