Если прошивка зальётся в МК нормально, то красный светодиод начнёт переодически мигать… двараза мигнёт, потом небольшая пвуза, затем опять помигает, потом опять пвуза и тд… таким образом даже неотключая программатор от МК вы увидите прошилась программа или нет……
Привет рыбаки. Случайно нашёл в интернете такую прикольную штуку - сервопривод называется, посмотрел в ютубе видео, как подключить его к адруинке, поразбирался что это такое вообще - программа для адруины и вот мой тервый скетч, который я извоят. Видео снимал с экрана, закачав какую-то програмку в ноут, так что без звука. Программу нужно заливать на адруино нано (на видео уно) предворительно изменив номера пинов, как вам удобно будет.
#include <Servo.h> Servo a; void setup() { a.attach(A1); pinMode (4,INPUT); pinMode (3,INPUT); pinMode (2,INPUT); } void loop() { a. write(0); delay(1000); if(digitalRead (3) == 1) { a. write(5); delay(200); a.write(90); delay(200); a. write(10); delay(200); a.write(90); delay(200); a. write(20); delay(200); a. write(90); delay(200); a. write(30); delay(200); a.write(90); delay(200); a. write(40); delay(200); a. write(90); delay(200); a. write(50); delay(200); a.write(90); delay(200); a. write(60); delay(200); a. write(0); delay(1000); } {
if(digitalRead (2) == 1) { a. write(40); delay(800); a. write(90); delay(800); a. write(60); delay(500);
} {
if(digitalRead (4) == 1) { a. write(90); delay(500); a. write(0); delay(1000); } } } }
Осталось только приделать хлыстик и кивок, но честно говоря, мне изра больше нравится на шаговом двигателе. Ну посмотрим как понравится рыбе.
на шаговом можно сымитировать то же самое. для удочки можно использовать любые приводы и заставить их работать одинаково.
теперь надо следующий этап: добавить обучаемость. То есть, нажимаете кнопку, играете удочкой вручную, отпускаете кнопку - программа игры записалась. Затем сделать возможность записи и выбора нескольких вариантов.
Программа, что я выше представил, расчитана на поворот сервопривода 90 градусов, это хорошо, если хлыстик приделать прям к сервоприводу, а если делать подставку для удочки, как у меня, то нужно 180 градусов. И чтобы хлыстик лучше играл, разбивать шаг нужно не 5,90,10,90,... а через десятку, как внизу. 5,15,10,25,20,35,... Вот скетч. #include <Servo.h> Servo a; void setup() { a.attach(A1); pinMode (A4,INPUT); pinMode (A3,INPUT); pinMode (A2,INPUT); } void loop() { a. write(0); delay(1000); if(digitalRead (A4) == 1) { a. write(5); delay(200); a.write(15); delay(200); a. write(10); delay(200); a.write(25); delay(200); a. write(20); delay(200); a. write(35); delay(200); a. write(30); delay(200); a.write(45); delay(200); a. write(40); delay(200); a. write(55); delay(200); a. write(50); delay(200); a.write(65); delay(200); a. write(60); delay(200); a. write(75); delay(200); a.write(70); delay(200); a. write(85); delay(200); a. write(80); delay(200); a. write(95); delay(200); a.write(90); delay(200); a.write(105); delay(200); a.write(100); delay(200); a. write(115); delay(200); a. write(110); delay(200); a. write(125); delay(200); a.write(120); delay(200); a. write(135); delay(200); a. write(130); delay(200); a. write(145); delay(200); a.write(140); delay(200); a. write(155); delay(200); a. write(150); delay(200); a.write(165); delay(200); a. write(160); delay(200); a. write(170); delay(2000); a. write(0); delay(1000);
} {
if(digitalRead (A3) == 1) { a. write(40); delay(800); a. write(90); delay(800); a. write(120); delay(800); a. write(170); delay(800); a. write(170); delay(2000); a. write(0); delay(1000);
} {
if(digitalRead (A2) == 1) { a. write(180); delay(500); a. write(180); delay(2000); a. write(0); delay(1000); } } } }
Удочка отпущена 0 градусов
Удочка поднята 170 градусов, 180 не целесообраззно, уже почти нет хода.
скетч на 6 программ Я взял двойной переключатель 4 положения, первое положение пауза, три программы через переключатель #include <Servo.h> Servo a; void setup() { a.attach(A1); pinMode (A5,INPUT); pinMode (A4,INPUT); pinMode (A3,INPUT); pinMode (A2,INPUT); pinMode (4,INPUT); pinMode (3,INPUT); } void loop() { a. write(0); delay(1000); if(digitalRead (A2) == 1) { a. write(5); delay(200); a. write(10); delay(200); a. write(15); delay(200); a. write(20); delay(200); a. write(25); delay(200); a. write(30); delay(200); a. write(35); delay(200); a. write(40); delay(200); a. write(45); delay(200); a. write(50); delay(200); a. write(55); delay(200); a. write(60); delay(200); a. write(65); delay(200); a. write(70); delay(200); a. write(75); delay(200); a. write(80); delay(200); a. write(85); delay(200); a. write(90); delay(200); a. write(95); delay(200); a. write(100); delay(200); a. write(105); delay(200); a. write(110); delay(200); a. write(115); delay(200); a. write(120); delay(200); a. write(125); delay(200); a. write(130); delay(200); a. write(135); delay(200); a. write(140); delay(200); a. write(145); delay(200); a. write(150); delay(200); a.write(155); delay(200); a. write(160); delay(200); a. write(165); delay(2000);
} {
if(digitalRead (A3) == 1) { a. write(5); delay(400); a. write(10); delay(400); a. write(15); delay(400); a. write(20); delay(400); a. write(25); delay(400); a. write(30); delay(400); a. write(35); delay(400); a. write(40); delay(400); a. write(45); delay(400); a. write(50); delay(400); a. write(55); delay(400); a. write(60); delay(400); a. write(65); delay(400); a. write(70); delay(400); a. write(75); delay(400); a. write(80); delay(400); a. write(85); delay(400); a. write(90); delay(400); a. write(95); delay(400); a. write(100); delay(400); a. write(105); delay(400); a. write(110); delay(400); a. write(115); delay(400); a. write(120); delay(400); a. write(125); delay(400); a. write(130); delay(400); a. write(135); delay(400); a. write(140); delay(400); a. write(145); delay(400); a. write(150); delay(400); a.write(155); delay(400); a. write(160); delay(400); a. write(165); delay(2000);
} {
if(digitalRead (A5) == 1) { a. write(40); delay(800); a. write(90); delay(800); a. write(120); delay(800); a. write(170); delay(800); a. write(170); delay(2000); a. write(0); delay(1000); }
{
if(digitalRead (3) == 1) { a. write(170); delay(500); a. write(170); delay(2000); a. write(-0); delay(1000); } {
if(digitalRead (4) == 1) { a. write(40); delay(400); a. write(10); delay(800); a. write(90); delay(400); a. write(40); delay(800); a. write(120); delay(400); a. write(60); delay(800); a. write(160); delay(400); a. write(90); delay(800); a. write(170); delay(1000); a. write(0); delay(1000); } {
if(digitalRead (A4) == 1) { a. write(5); delay(200); a.write(15); delay(200); a. write(10); delay(200); a.write(25); delay(200); a. write(20); delay(200); a. write(35); delay(200); a. write(30); delay(200); a.write(45); delay(200); a. write(40); delay(200); a. write(55); delay(200); a. write(50); delay(200); a.write(65); delay(200); a. write(60); delay(200); a. write(75); delay(200); a.write(70); delay(200); a. write(85); delay(200); a. write(80); delay(200); a. write(95); delay(200); a.write(90); delay(200); a.write(105); delay(200); a.write(100); delay(200); a. write(115); delay(200); a. write(110); delay(200); a. write(125); delay(200); a.write(120); delay(200); a. write(135); delay(200); a. write(130); delay(200); a. write(145); delay(200); a.write(140); delay(200); a. write(155); delay(200); a. write(150); delay(200); a.write(165); delay(200); a. write(160); delay(200); a. write(170); delay(2000); a. write(0); delay(1000);
Ну начнём с того, что человек это сделал абсолютно бесплатно, для заливки в микроконтроллер используется файл уже скомпелированный, зачем мне исходник?Что мне с ним делать, если программа уже написана и полностью соответствует моим задачам? И ещё, вам лениво смотреть видео пару минут, а мне лениво пересказывать готовое и нагляно отснятое видео. Кому на самом деле это интересно, тот посмотрит.
Граждане адруиншики, подскажите как сдклать так, чтобы скорость отпусувния блесны стала меньше? Не нашёл я в скетче где регулировать скорость привода. Посмотрите как быстро отпускается.
Причём здесь машинные инструкции? Скетч для адруины это и есть исходник, вы как с луны свалились, ей богу! Это для микроконтроллера приходилось писать исходник, затем компелировать, потом через програматор заливать в микроконтроллер, в адруино даже програматор не нужен, чего я вобще расказываю вам прописные истины, смешно просто!
Ну я так понимаю все занятые, или от новогодней пьянки не отошли, замедлил скорость засчёт пауз, вот окончательная програмка, если кто соберётся делать, то милости прошу.
#include <Servo.h> Servo a; void setup() { a.attach(A1); pinMode (A5,INPUT); pinMode (A4,INPUT); pinMode (A3,INPUT); pinMode (A2,INPUT); pinMode (4,INPUT); pinMode (3,INPUT); } void loop() { a. write(0); // Чтобы выстовить привод горизонтально delay(1000); if(digitalRead (A2) == 1) //работает первая кнопка { a. write(5); delay(200); a. write(10); delay(200); a. write(15); delay(200); a. write(20); delay(200); a. write(25); delay(200); a. write(30); delay(200); a. write(35); delay(200); a. write(40); delay(200); a. write(45); delay(200); a. write(50); delay(200); a. write(55); delay(200); a. write(60); delay(200); a. write(65); delay(200); a. write(70); delay(200); a. write(75); delay(200); a. write(80); delay(200); a. write(85); delay(200); a. write(90); delay(200); a. write(95); delay(200); a. write(100); delay(200); a. write(105); delay(200); a. write(110); delay(200); a. write(115); delay(200); a. write(120); delay(200); a. write(125); delay(200); a. write(130); delay(200); a. write(135); delay(200); a. write(140); delay(200); a. write(145); delay(200); a. write(150); delay(200); a.write(155); delay(200); a. write(160); delay(200); a. write(165); delay(2000); a. write(160); delay(200);
a. write(150); delay(200);
a. write(140); delay(200);
a. write(130); delay(200);
a. write(120); delay(200);
a. write(110); delay(200);
a. write(100); delay(200); a. write(90); delay(200); a. write(80); delay(200);
a. write(70); delay(200);
a. write(60); delay(200);
a. write(50); delay(200);
a. write(40); delay(200);
a. write(30); delay(200);
a. write(20); delay(200);
a. write(10); delay(200); a. write(0); delay(1000); } {
if(digitalRead (A3) == 1)//Работает вторая кнопка { a. write(5); delay(400); a. write(10); delay(400); a. write(15); delay(400); a. write(20); delay(400); a. write(25); delay(400); a. write(30); delay(400); a. write(35); delay(400); a. write(40); delay(400); a. write(45); delay(400); a. write(50); delay(400); a. write(55); delay(400); a. write(60); delay(400); a. write(65); delay(400); a. write(70); delay(400); a. write(75); delay(400); a. write(80); delay(400); a. write(85); delay(400); a. write(90); delay(400); a. write(95); delay(400); a. write(100); delay(400); a. write(105); delay(400); a. write(110); delay(400); a. write(115); delay(400); a. write(120); delay(400); a. write(125); delay(400); a. write(130); delay(400); a. write(135); delay(400); a. write(140); delay(400); a. write(145); delay(400); a. write(150); delay(400); a.write(155); delay(400); a. write(160); delay(400); a. write(165); delay(2000); a. write(160); delay(200);
a. write(150); delay(200);
a. write(140); delay(200);
a. write(130); delay(200);
a. write(120); delay(200);
a. write(110); delay(200);
a. write(100); delay(200); a. write(90); delay(200); a. write(80); delay(200);
a. write(70); delay(200);
a. write(60); delay(200);
a. write(50); delay(200);
a. write(40); delay(200);
a. write(30); delay(200);
a. write(20); delay(200);
a. write(10); delay(200); a. write(0); delay(1000); } {
if(digitalRead (A5) == 1) { a. write(40); delay(800); a. write(90); delay(800); a. write(120); delay(800); a. write(170); delay(800); a. write(170); delay(2000); a. write(160); delay(200);
a. write(150); delay(200);
a. write(140); delay(200);
a. write(130); delay(200);
a. write(120); delay(200);
a. write(110); delay(200);
a. write(100); delay(200); a. write(90); delay(200); a. write(80); delay(200);
a. write(70); delay(200);
a. write(60); delay(200);
a. write(50); delay(200);
a. write(40); delay(200);
a. write(30); delay(200);
a. write(20); delay(200);
a. write(10); delay(200); a. write(0); delay(1000);
}
{
if(digitalRead (3) == 1)//Работает вторая кнопка { a. write(170); //Дёрнется на 180 градусов delay(500); a. write(170); delay(2000); a. write(-0); delay(1000); } {
if(digitalRead (4) == 1) { a. write(40); delay(400); a. write(10); delay(800); a. write(90); delay(400); a. write(40); delay(800); a. write(120); delay(400); a. write(60); delay(800); a. write(160); delay(400); a. write(90); delay(800); a. write(170); delay(1000); a. write(160); delay(200);
a. write(150); delay(200);
a. write(140); delay(200);
a. write(130); delay(200);
a. write(120); delay(200);
a. write(110); delay(200);
a. write(100); delay(200); a. write(90); delay(200); a. write(80); delay(200);
a. write(70); delay(200);
a. write(60); delay(200);
a. write(50); delay(200);
a. write(40); delay(200);
a. write(30); delay(200);
a. write(20); delay(200);
a. write(10); delay(200); a. write(0); delay(1000);
} {
if(digitalRead (A4) == 1) { a. write(5); delay(200); a.write(15); delay(200); a. write(10); delay(200); a.write(25); delay(200); a. write(20); delay(200); a. write(35); delay(200); a. write(30); delay(200); a.write(45); delay(200); a. write(40); delay(200); a. write(55); delay(200); a. write(50); delay(200); a.write(65); delay(200); a. write(60); delay(200); a. write(75); delay(200); a.write(70); delay(200); a. write(85); delay(200); a. write(80); delay(200); a. write(95); delay(200); a.write(90); delay(200); a.write(105); delay(200); a.write(100); delay(200); a. write(115); delay(200); a. write(110); delay(200); a. write(125); delay(200); a.write(120); delay(200); a. write(135); delay(200); a. write(130); delay(200); a. write(145); delay(200); a.write(140); delay(200); a. write(155); delay(200); a. write(150); delay(200); a.write(165); delay(200); a. write(160); delay(200); a. write(170); delay(2000); a. write(160); delay(200);
a. write(150); delay(200);
a. write(140); delay(200);
a. write(130); delay(200);
a. write(120); delay(200);
a. write(110); delay(200);
a. write(100); delay(200); a. write(90); delay(200); a. write(80); delay(200);
a. write(70); delay(200);
a. write(60); delay(200);
a. write(50); delay(200);
a. write(40); delay(200);
a. write(30); delay(200);
a. write(20); delay(200);
a. write(10); delay(200); a. write(0); delay(1000);
Спасибо! Очень интересно, и с уловом. Моя удочка улова не принесла, ибо совершил Глупейший прокол. Не в электронике. Функционал у меня шире был: Игра вверх и вниз с регулируемым шагом. Реакция на поклевку - подсечка. По результу во время контрольного ожидания Либо продолжение игры, если не обнаружена рыба, Либо вытаскивание на лед и отвод в сторону от лунки.