Программирование

Вопросы по программированию Arduino.

Оператор goto и цикл while

Приветствую формучане.

Интересует вот такой вопросик. Есть следующий код

while (lab==1)
  {
    if (flag==1) {mainmenu(lab1,lab);}
    knopka=digitalRead(knop);
    if ((flag!=1)&&(knopka==1)) {goto label2;}
    gg=digitalRead(pinA);
     gg1=digitalRead(pinB);

    
    if ((gg==1)&&(gg1==1)) {lab=0;}
  }

Вот где идет проверка по переменной flag и knopka (5 строка) будет осуществлен выход из цикла и переход к метке? или надо сначала break а потом goto?

Команда ls при работе сбиблиотекой SD

Среди примеров, включенных в состав стандартной библиотеки SD, присутствует скетч CardInfo, фрагмент которого привожу:

Логические операторы

О великие программисты, подскажите какой лог.оператор или систему операторов требуются для выражений:

-------------------------------------------------------------------------

11001011 [лог.операция] 11111111 = 00000000

11001011 [та же лог.операция] 00000000 = 11001011 

-------------------------------------------------------------------------

Так получается, что для первого нужен xor, для второго or. Можно ли заменить эти два оператора чем-то одним, иным? 

Fade эффект при включение RGB ленты

Доброго времени суток.

Разбираюсь тут значит с RGB лентой, подключил её к ардуино через ULN, нашел программку на процессенги теперь можно выбирать цвет с компа - красота.

Но на месте прогресс мой не стоит. Сделал что бы выбраный цвет сохранялся в памити ардуинки, и когда включаем её в сеть, то она светится последним выбраным цветом - тоже кросата.

Но она включается резко. Хотелось бы сделать плавное включение, но вот не знаю как на сеё языке это сделать. Подскажите, мм?

Вот фрагмент кода:

LCD 16x2 и прерывание - странности поведения

Добрый день, всем

Играюсь с TLC5940 и все там, собственно, хорошо. Решил вот добавить в проект экранчик 16х2.

В итоге, наткнулся на странность их совместной работы. Даташитов/мануалов в достаточной степени пока не накурился (в процессе это), но есть подозрения, что ошибка очень проста, но на замыленный глаз мой не видна с первого раза.

Из всего проекта сделал тестовый скетч, показывающий ошибку.

Итак, вот код работы с экранчиком:

Разбор тестовой строки

Здравствуйте, коллеги!

Использую Ethernet-shield. Пытаюсь разобрать параметр, кторый передается в URL, например так: http://192.168.3.5/?2:1,15:0,11:2 . Тут 192.168.3.5 - это адрес шилда. Сервер работает. Привожу код:

А чей та за глюк такой интересный на ровном месте, в мигании диодом ?

Так работает

void loop()
{
    const char *msg = "hello";
    digitalWrite(13, true ); // Flash a light to show transmitting
    Serial.println("test");
    digitalWrite(13, false);
    delay(200);
}

а вот так не работает

void loop()
{
    const char *msg = "hello";
    digitalWrite(13, true ); // Flash a light to show transmitting
    
    //Serial.println("test");

    digitalWrite(13, false);
    delay(200);
}

 

каким образом перевести в arduino тангенс в градусы????

Пока идея только сделать значения для вснх 90 градосов через if. Может есть какой нибудь более рациональный способ для вычисления градусов с тангенса

Работа с условиями, плюсует вместо добавления.

    if (rtc[2]+rtc[1] == AutoOff) {
      AutoOff=0;
    }

Вот такой простенький пример.

В AutoOff записывается время, например 1230.

В rtc[2] хранятся часы, а в rtc[1] минуты.

Следовательно если AutoOff совспадает с временем то сто-то происходит.

Но почему выше преведенный пример, вот тут rtc[2]+rtc[1] плюсует 2 фицры. Мне нужно просто необходимо вставить часы и минуты. Пробовал через точку rtc[2].rtc[1] Появляется ошибка компелации. Что делать? 

 

Задержка (delay) и buzzer

К моей Arduino Mega, к 7 порту подключен buzzer (пищалка). Включаю я его таким образом:

analogWrite(7, 252); // Almost any value can be used except 0 and 255
delay(210); // wait for a delayms ms
analogWrite(7, 0); // 0 turns it off

Как видно в этой конструкции есть delay который на несколько микро секунд останавливает работу всего Arduino. Как-то можно избавится от этой остановки?