Это такое упрощение (для меня в писании кода)- фломастер при любой цифре ходит по одному и тому же маршруту состоящему из 7 отрезков-сегментов, опускаясь когда нужно и всегда поднимаясь после прохождения данного отрезка...если буду делать буквы, воспользуюсь аналогией с 16 сегментным индикатором...
Переделал под 4 цифры, теперь можно и календарь (по аналогии с известными пишущими часами) сделать на "модуле реального времени" . Осталось дождаться от алиэкспресс волшебной самостирающейся ручки, пишут продавцы, что за час исчезает надпись. Вот ещё забавную идею для "времяписания" нашёл: http://mozgochiny.ru/electronics-2/bina ... mi-rukami/
Не знаю чего так скептически... Вот взять многими так любимый светодиод, "примотать" к той части фломастера которую любят жевать, включать-выключать его вместо опускания-подъема стержня... и в темноте можно время фотиком фризлайтить с помощником. Вот тебе и следующий "проекть" в продолжение.
///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч №5 буквы алфавита ////////////////////////////// #include <Servo.h> // подключение библиотеки Servo
Servo servo1;//указываем сервопривод основного поворота (при увел. угла - поворот рычага ВЛЕВО) Servo servo2;//указываем сервопривод дополнительного поворота (при увел. угла - поворот рычага ВПРАВО) Servo servo3;//указываем сервопривод подъёмника (при увел. угла - поворот рычага ВВЕРХ)
int a=98;//начальный угол int b=85; int a03=125;
int da=8;int db=25;//переменные задающие величину изменения углов
int A; int B; //переменные для текущих значений углов поворота сервоприводов int a3=a03; int i;//счётчик int r=0;//счётчик числа рисуемых букв с нуля отсчёта int n=15;// единица временного интервала int j;// переменная для выбранной буквы int tablC[7]={0,16,4,19,8,13,14};
Да, надо учиться пользоваться, согласен. Буду спрашивать на тематическом форуме ардуинщиков, но там терпелок хватает у людей на 2-3 вопроса,а отличить стёб от смутной подсказки не всегда удаётся.
///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч №5 буквы алфавита в слове ////////////////////////////// #include <Servo.h> // подключение библиотеки Servo
Servo servo1;//указываем сервопривод основного поворота (при увел. угла - поворот рычага ВЛЕВО) Servo servo2;//указываем сервопривод дополнительного поворота (при увел. угла - поворот рычага ВПРАВО) Servo servo3;//указываем сервопривод подъёмника (при увел. угла - поворот рычага ВВЕРХ)
int a=98;//начальный угол int b=85; int a03=125;
int da=8;int db=25;//переменные задающие величину изменения углов
int A; int B; //переменные для текущих значений углов поворота сервоприводов int a3=a03; int i;//счётчик int r=0;//счётчик числа рисуемых букв с нуля отсчёта int n=15;// единица временного интервала int j;// переменная для выбранной буквы int tablC[7]={0,16,4,19,8,13,14};//слово для письма - АРДУИНО unsigned short tablB[34]={0b0010010001001100, //0-А// 0b1011001111110000, //1-Б// 0b1001001100111001, //2-В// 0b1001000000110000, //3-Г// 0b0010011100001100, //4-Д// 0b1001001110110000, //5-Е// 0b0100100000001111, //6-Ж// 0b0010001101111000, //7-З// 0b1011010000001100, //8-И// 0b1011110000001100, //9-Й// 0b1001000010001001, //10-К// 0b0010010000001100, //11-Л// 0b1011010000001010, //12-М// 0b1011010011000000, //13-Н// 0b1011011100110000, //14-О// 0b1011010000110000, //15-П// 0b1001010011110000, //16-Р// 0b1001001100110000, //17-С// 0b0100100000110000, //18-Т// 0b0011011111000000, //19-У// 0b0101110011110000, //20-Ф// 0b0000000000001111, //21-Х// 0b1011011100000001, //22-Ц// 0b0011010011000000, //23-Ч// 0b1111111100000000, //24-Ш// 0b1111111100000001, //25-Щ// 0b0110100101100000, //26-Ъ// 0b1111011010000000, //27-Ы// 0b1011001111000000, //28-Ь// 0b0010011101110000, //29-Э// 0b1111110110010000, //30-Ю// 0b0011010011110100, //31-Я// 0b1111111111111111, //32// рисуем все 16 сегментов// 0b0000000000000000};//33-пробел // таблица кодов сегментов-букв
void setup() { //Serial.begin(9600); servo1.attach(5);// подключаем переменную servo к соответствующему выводу платы Ардуино servo2.attach(6); servo3.attach(7); servo1.write(a);//начальная установка положения servo2.write(b); servo3.write(a03); delay(1000); } ////////////////////////////////////////////////////////////////////////////////////////////// void loop() { if (r<7) { f_(0); for (r=0;r<7;r++)// условие числа рисуемых букв { int tablA[18]={a, b, a+db/4, b+db/2, a+db/2, b+db, a+db/2-da, b+db, a+db/4-da, b+db/2, a-da, b, a+db/2-da/2,b+db, a+db/4-da/2,b+db/2, a-da/2, b }; // координаты узловых точек сегментов
a=a-da-2; } } } //////функция поднимания-опускания фломастера (значения аргумента 0 и 1 соответственно)///// void f_(int k) { while (a3>85&&k==1) {servo3.write(a3);a3=a3-1;delay(n);}if(k==1){a3=85;} while (a3<125&&k==0) {servo3.write(a3);a3=a3+1;delay(n);}if (k==0){a3=125;} } //////функция рисования отрезка вертикально вверх ///// void fv_() { int K1=0; while (K1<=db/2) {servo1.write(A);servo2.write(B);B=B+2;A=A+1;K1=K1+2;delay(n);}
} //////функция рисования отрезка горизонтально вправо ///// void fg_() { int K1=0; while (K1<=da/2) {servo1.write(A);A=A-1;K1=K1+1;delay(n/2);}
} //////функция рисования отрезка по диагонали вправо-вверх ///// void fdp_() { int K1=0;
while (K1<db/4) {K1=K1+1;B=B+1;servo2.write(B);delay(n);}
servo1.write(A+db/4-da/2);delay(n); K1=0; while (K1<db/4) {K1=K1+1;B=B+1;servo2.write(B);delay(n);} } //////функция рисования отрезка по диагонали влево-вверх ///// void fdl_() { int K1=0;
while (K1<3*db/16) {K1=K1+2;B=B+3;A=A+2;servo2.write(B);servo1.write(A);delay(n);}
servo2.write(B);servo1.write(A);delay(n);
K1=0; while (K1<3*db/16) {K1=K1+1;B=B+1;A=A+1;servo2.write(B);servo1.write(A);delay(n);} }
Пока так код изменил, согласно рекомендациям. С дёрганьем пока не пойму как быть(где delay() совать).
Добавлено спустя 1 час 27 минут 46 секунд:
Код:
///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч №5 буквы алфавита в слове ////////////////////////////// #include <Servo.h> // подключение библиотеки Servo
Servo servo1;//указываем сервопривод основного поворота (при увел. угла - поворот рычага ВЛЕВО) Servo servo2;//указываем сервопривод дополнительного поворота (при увел. угла - поворот рычага ВПРАВО) Servo servo3;//указываем сервопривод подъёмника (при увел. угла - поворот рычага ВВЕРХ)
int a=98;//начальный угол int b=85; int a03=125;
int da=8;int db=25;//переменные задающие величину изменения углов
int A; int B; //переменные для текущих значений углов поворота сервоприводов int a3=a03; int i;//счётчик int r=0;//счётчик числа рисуемых букв с нуля отсчёта int n=15;// единица временного интервала int j;// переменная для выбранной буквы int tablC[7]={0,16,4,19,8,13,14};//слово для письма - АРДУИНО unsigned short tablB[34]={0b0010010001001100, //0-А// 0b1011001111110000, //1-Б// 0b1001001100111001, //2-В// 0b1001000000110000, //3-Г// 0b0010011100001100, //4-Д// 0b1001001110110000, //5-Е// 0b0100100000001111, //6-Ж// 0b0010001101111000, //7-З// 0b1011010000001100, //8-И// 0b1011110000001100, //9-Й// 0b1001000010001001, //10-К// 0b0010010000001100, //11-Л// 0b1011010000001010, //12-М// 0b1011010011000000, //13-Н// 0b1011011100110000, //14-О// 0b1011010000110000, //15-П// 0b1001010011110000, //16-Р// 0b1001001100110000, //17-С// 0b0100100000110000, //18-Т// 0b0011011111000000, //19-У// 0b0101110011110000, //20-Ф// 0b0000000000001111, //21-Х// 0b1011011100000001, //22-Ц// 0b0011010011000000, //23-Ч// 0b1111111100000000, //24-Ш// 0b1111111100000001, //25-Щ// 0b0110100101100000, //26-Ъ// 0b1111011010000000, //27-Ы// 0b1011001111000000, //28-Ь// 0b0010011101110000, //29-Э// 0b1111110110010000, //30-Ю// 0b0011010011110100, //31-Я// 0b1111111111111111, //32// рисуем все 16 сегментов// 0b0000000000000000};//33-пробел // таблица кодов сегментов-букв
void setup() { //Serial.begin(9600); servo1.attach(5);// подключаем переменную servo к соответствующему выводу платы Ардуино servo2.attach(6); servo3.attach(7); servo1.write(a);//начальная установка положения servo2.write(b); servo3.write(a03); delay(1000); } ////////////////////////////////////////////////////////////////////////////////////////////// void loop() { if (r<7) { f_(0); for (r=0;r<7;r++)// условие числа рисуемых букв { int tablA[18]={a, b, a+db/4, b+db/2, a+db/2, b+db, a+db/2-da, b+db, a+db/4-da, b+db/2, a-da, b, a+db/2-da/2,b+db, a+db/4-da/2,b+db/2, a-da/2, b }; // координаты узловых точек сегментов
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения