Итоговый код покажите ?
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); //пауза для ажидания поворота сервопривода;
}
}
Огромное спасибо!!!
Немного подправил и ву-аля!!!
{
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); //пауза для ажидания поворота сервопривода;
}
}
Спасибо всем кто оказал помощь!!!
Вечер добрый. Нужна ваша помощь, Вы мне очень сильно помогли в написание скетча для 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. Это не про то ,что невозможно сделать, просто немного сложнее будет, “вручную”, без библиотеки