Технический форум по робототехнике.
dimamichev » 10 фев 2017, 15:31
Ещё конденсаторы помогают...
dimamichev » 12 фев 2017, 19:19
Пробовал ШИМ на группах светодиодов (по схеме), так сказать в противоход друг другу. Две группы глазков рядом... разницы визуально в яркости свечения что 50 на 50, что 30 на 70 не увидел (а в симуляторе на экране компа по другому было). Странно всё это... Буду пробовать на своих любымых трубочках от коктейля (верхняя картинка), может там будет перелив света?..
- Вложения
-
-
dimamichev » 16 фев 2017, 14:53
Сейчас мастерю программку под свою старую конструкцию ночника "Три цвета" по новой схеме. Возник вопрос (наивный) можно выходы как то переводить в высокоимпендансное состояние?
- Вложения
-
-
Dmitry__ » 16 фев 2017, 15:05
Можно, программируй их на вход.
dimamichev » 16 фев 2017, 19:39
Понял...параллельно возник ещё вопрос (с ходу ответ не находится)- а сколько плата потребляет на холостом ходу?
Добавлено спустя 2 минуты 11 секунд:
А то стал задумываться об автономности питания поделок...
Madf » 16 фев 2017, 23:33
всё как обычно, контроллер можно глянуть в датащит (в районе 10 мА, зависит от частоты и режимов используемой переферии)
а обвес считаем отдельно, если много светоедов, то кушать будет не мало (ну и от алгоритма управления будет зависеть)
dimamichev » 19 фев 2017, 10:11
Возник вопрос (никак с кубом не успокоюсь см. схему): как это другой народ аналоговые входы цифровыми выходами делает?
- Вложения
-
Madf » 19 фев 2017, 11:05
Это как раз тот самый случай, когда конструктор впаривают как законченное устройство, игнорируя реальное положение вещей.
А реальность такова, что это не только аналоговые входы/выходы:
Так понятнее?
dimamichev » 19 фев 2017, 11:47
Значит вне рамок команд Ардуино есть команды переиначивающие вход на выход? И ещё попутно: заругался при проверке "загрузчик"... не понимает x1,x2..?
- Код: Выделить всё • Развернуть
for (i=0;i<=5;i=i+1)
{
xi=analogRead(Ai);
yi=map(xi, 0, 1023, 0, 9);
}
Angel71 » 19 фев 2017, 17:25
i=i+1, i+=1, i++, ++i
и где в этом огрызке кода x1, x2? есть только i, xi, yi, ai и те не факт, что объявлены. может хоть немного самоучитель по си почитать, прежде чем за светодиодики хвататься?
dimamichev » 19 фев 2017, 17:42
Ангел не ругайся, разобрался я... в этом фрагменте кода я по наивности вознадеялся, что в цикле, например, при i=1 "машина" xi поймёт как x1 и т.д... На простых конструкциях мне легче самому разобраться и до других донести чем самоучитель одолевать (хотя это необходимое условие)... Просто при компиляции "машина" могла бы написать: дорогой, ты хотел наверное не xi , а x(i)=x1, но я так не умею... (шутка)
Добавлено спустя 3 минуты 2 секунды:
Светодиодики... А за что ещё хвататься? Они основа исполнительных лялек.
Angel71 » 19 фев 2017, 17:53
это не наивность, а безграмотность, лень и глупость. объявляем переменные d, g, t, i и дальше по тексту digit. можно ещё веселей сделать, объявив все одно буквенные. смысл улавливаешь? компилятор это не интерактивная диалоговая система с ai, перестраивающая правила языка как балбесам хочется. это очень компактная, эффективная и безжалостная штукенция с чёткими правилами. написала "не катит, пэрэдэлать", значит пэрэдэлать.
dimamichev » 19 фев 2017, 18:06
А вот можно спокойно разжевать, а не тыкать как котёнка?.. Как в самоучителе (в каком кстати?). Если нет, то грубить не надо...Что касается безграмотности, лени, глупости и т.д... Не без этого... Дураки всё знают, никогда не устают, ни в чём не сомневаются...и самое главное - они не делают глупостей (как им кажется)...
Angel71 » 19 фев 2017, 18:20
нельзя.
- Код: Выделить всё • Развернуть
int a = 1;
int b = 2;
int x = a+++b;
чему равно x? теперь переделай это объявление так, что бы в нём не было знака присваивания.
что это
- Код: Выделить всё • Развернуть
x = a == 3 ? 1 : 0
делает? а это
- Код: Выделить всё • Развернуть
(a+x > 6) ? Serial.print("oops") : b = 8;
или это
- Код: Выделить всё • Развернуть
(x&(x-1)==0) ? Serial.print("yes") : Serial.print("no");
что делает? так это простенькие вопросы, даже до указателей и работы с памятью не дошло. а си/си++ очень сложный, там громадное количество вещей, с гадать не вариант - нужно знать и правильно использовать.
есть талантливые люди, которые быстро схватывают и могут себе позволить хвататься за решение практических задач и по ходу их решения изучать основы. остальные сначала зубрят и не выдумывают велосипедов с квадратными колёсами. если сразу не понял, что a0, a1, ... a15 это константы и что в цикле нужно без всяких безумных переименований имён переменных, а просто подставить в инициализации i соответствующее число, то с основами языка явно очень туго, т.е. вариант 2 - зубрить основы языка, искать задачи и решать их пачками (как на знание языка, так и всякие алгоритмы составлять).
dimamichev » 19 фев 2017, 22:06
У меня немного другой подход... Я повторяю свои ранние конструкции на Ардуине, так учусь. Вот код для ночника (схема выше). Работает и это здорово. Конструкции конечно для "детишек"...Быть непонятым печалька не только балбеса, но и того кто его таковым считает...А ответы на свои вопросы конечно жду в доступной (мне) форме...а иначе зачем эти вопросы? Не умеете, не беситесь, Вы ведь ангел.
- Код: Выделить всё • Развернуть
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
//Свечение трёх трубочек с регулятором амплитуды перелива света и частоты//
unsigned int n1=0;
unsigned int n2=0;
unsigned int n3=0;
int k1=1;
int k2=1;
int k3=1;
int i=0;
long y1=0;
long y2=0;
unsigned int x=0;
unsigned int j=0;
unsigned int z=0;
unsigned int r=0;
void setup()
{
pinMode(6, OUTPUT); // канал сигнала для 1 трубки /
analogWrite(6,0);
pinMode(5, OUTPUT); // канал сигнала для 2 трубки /
analogWrite(5,0);
pinMode(9, OUTPUT); // канал сигнала для 3 трубки /
analogWrite(9,0);
pinMode(A0, INPUT); // регулятор амплитуды и частоты/
}
void loop()
{
x=analogRead(A0); y2=millis();
z=map(x, 0, 1023, 0, 127); // переменная, ограничивающая min яркости
j=map(x, 0, 1023, 20, 2); // переменная, определяющая длительность задержки
r=map(x, 0, 1023, 255, 128); // переменная, ограничивающая max яркости
n1=n1+k1; n2=n2+k2; n3=n3+k3; //счётчики ступеней изменения яркости
if ( n1>=r) { k1= -1 ;} if ( n1<=z) {k1= 1 ; }//условия смены направления счёта
if ( n2>=r) { k2= -1 ;} if ( n2<=z) {k2= 1 ; }//ступеней изменения яркости
if ( n3>=r) { k3= -1 ;} if ( n3<=z) {k3= 1 ; }
if (y2-y1>=5000&i==0){n1=z+1;n2=127-z;n3=r;y1=y2;i=1;}// условия смены
if (y2-y1>=30000&i==1){ i=2;y1=y2;} //программы переключения
if (y2-y1>=5000&i==2){n1=r;n2=r;n3=r;y1=y2;i=3;}
if (y2-y1>=30000&i==3){ i=0;y1=y2;}
if(i==0 || i==2){analogWrite(6,25); analogWrite(5,25); analogWrite(9,25);}
else
{
analogWrite(6,n1);
analogWrite(5,n2);
analogWrite(9,n3);
}
delay(j);
}
//
// Конец /
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////