roboforum.ru

Технический форум по робототехнике.

Вопросы новичка.

Ответить

Re: Вопросы новичка.

dimamichev » 10 фев 2017, 15:31

Ещё конденсаторы помогают...

Re: Вопросы новичка.

dimamichev » 12 фев 2017, 19:19

Пробовал ШИМ на группах светодиодов (по схеме), так сказать в противоход друг другу. Две группы глазков рядом... разницы визуально в яркости свечения что 50 на 50, что 30 на 70 не увидел (а в симуляторе на экране компа по другому было). Странно всё это... Буду пробовать на своих любымых трубочках от коктейля (верхняя картинка), может там будет перелив света?..
Вложения
свечение.JPG
схема 2.jpg

Re: Вопросы новичка.

dimamichev » 16 фев 2017, 14:53

Сейчас мастерю программку под свою старую конструкцию ночника "Три цвета" по новой схеме. Возник вопрос (наивный) можно выходы как то переводить в высокоимпендансное состояние?
Вложения
схема 2.jpg
ACDSee BMP Image.jpg

Re: Вопросы новичка.

Dmitry__ » 16 фев 2017, 15:05

Можно, программируй их на вход.

Re: Вопросы новичка.

dimamichev » 16 фев 2017, 19:39

Понял...параллельно возник ещё вопрос (с ходу ответ не находится)- а сколько плата потребляет на холостом ходу?

Добавлено спустя 2 минуты 11 секунд:
А то стал задумываться об автономности питания поделок...

Re: Вопросы новичка.

Madf » 16 фев 2017, 23:33

всё как обычно, контроллер можно глянуть в датащит (в районе 10 мА, зависит от частоты и режимов используемой переферии)
а обвес считаем отдельно, если много светоедов, то кушать будет не мало (ну и от алгоритма управления будет зависеть)

Re: Вопросы новичка.

dimamichev » 19 фев 2017, 10:11

Возник вопрос (никак с кубом не успокоюсь см. схему): как это другой народ аналоговые входы цифровыми выходами делает?
Вложения
Capture.PNG

Re: Вопросы новичка.

Madf » 19 фев 2017, 11:05

Это как раз тот самый случай, когда конструктор впаривают как законченное устройство, игнорируя реальное положение вещей.
А реальность такова, что это не только аналоговые входы/выходы:

Изображение

Так понятнее?

Re: Вопросы новичка.

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);
             
             }

Re: Вопросы новичка.

Angel71 » 19 фев 2017, 17:25

i=i+1, i+=1, i++, ++i
и где в этом огрызке кода x1, x2? есть только i, xi, yi, ai и те не факт, что объявлены. может хоть немного самоучитель по си почитать, прежде чем за светодиодики хвататься?

Re: Вопросы новичка.

dimamichev » 19 фев 2017, 17:42

Ангел не ругайся, разобрался я... в этом фрагменте кода я по наивности вознадеялся, что в цикле, например, при i=1 "машина" xi поймёт как x1 и т.д... На простых конструкциях мне легче самому разобраться и до других донести чем самоучитель одолевать (хотя это необходимое условие)... Просто при компиляции "машина" могла бы написать: дорогой, ты хотел наверное не xi , а x(i)=x1, но я так не умею... (шутка)

Добавлено спустя 3 минуты 2 секунды:
Светодиодики... А за что ещё хвататься? Они основа исполнительных лялек.

Re: Вопросы новичка.

Angel71 » 19 фев 2017, 17:53

это не наивность, а безграмотность, лень и глупость. объявляем переменные d, g, t, i и дальше по тексту digit. можно ещё веселей сделать, объявив все одно буквенные. смысл улавливаешь? компилятор это не интерактивная диалоговая система с ai, перестраивающая правила языка как балбесам хочется. это очень компактная, эффективная и безжалостная штукенция с чёткими правилами. написала "не катит, пэрэдэлать", значит пэрэдэлать.

Re: Вопросы новичка.

dimamichev » 19 фев 2017, 18:06

А вот можно спокойно разжевать, а не тыкать как котёнка?.. Как в самоучителе (в каком кстати?). Если нет, то грубить не надо...Что касается безграмотности, лени, глупости и т.д... Не без этого... Дураки всё знают, никогда не устают, ни в чём не сомневаются...и самое главное - они не делают глупостей (как им кажется)...

Re: Вопросы новичка.

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 - зубрить основы языка, искать задачи и решать их пачками (как на знание языка, так и всякие алгоритмы составлять).

Re: Вопросы новичка.

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);

       }
   
//
// Конец /
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Rambler\'s Top100 Mail.ru counter