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

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

Трудности с DallasTemperature

Добрый день! Купил датчик температуры, нашол скетч (http://drewy.ru/arduino/cifrovoi-datchik-temperatury-dallas-ds18b20.html) что-бы опробывать в действии и вот тебе называется

 

Вывод большого количества собственных символов на LCD 16X2

Для одного из проектов, решил нарисовать собственный символ для lcd дисплея, применив корел создал вот такую вот сетку в которую вписал рисунок

потом как в примере Custom Character начал рисовать собственые символы, вот сооттветственно что получилось

проблема со стопами, нужна перепрошивка

Доброго времени суток! Друзья, у меня такая проблема - каждый из стопов осей не останавливает движение каретки, стола и вертикали, т.е. , допустим, каретка продолжает двигаться по оси X , упёршись в стоп. Зато в противоположную сторону не двигается(не могу подвинуть стрелочкой в программе). Мне сказали, что нужно перепришить ардуно мега 2560. В общем об электронике 3д принтеров и самих принтерах у меня небольшие представления, новичек. Сам принтер покупал конструктором, интересно было понять всю специфику Engineer'a v2.

Помогите кто чем может!!!

Есть задача, нужен счетчик в который с помощью матричной клавы 4х4 вводится число от 0 до 100, нажимается старт и с датчика считываются замыкания, как только достигается заданное число включается релюшка на 5 воль на 5 секунд. Вооот...

Нашел как подключить матричную клаву, как подключить LCD 1602 через 2 контакта к Мини про иначе контактов не хватает. А дальше дело не идет. Может кто сталкивался с подобными проектами или из чего переделать можно.

Буду рад любой помощи! Заранее благодарю!


Переход к bootloader'у из скетча

Добрый день, коллеги!

Есть простая задача: из скетча произвести переход на начало бутлоадера, который начинается с 0x3800.

Пытался определить функцию перехода так:

void (*bootloader)(void)= (void(*)(void))0x3800; 

При этом попадаю не в бут, а неизвестно куда.

А так:

void (*bootloader)(void)= 0x3800; 

сделать не дает, пишет, что
:13: error: invalid conversion from 'int' to 'void (*)()'
 

Как записать и прочитать число типа long

Как записать и прочитать число типа int в EEPROM знаю и использовал.

запись  

  byte *x = (byte *)&val;      
  EEPROM.write(10, x[0]);
  EEPROM.write(11, x[1]);
 

чтение

    byte xx[] = {
    EEPROM.read(10), EEPROM.read(11)                                                           };
    int *x1 = (int *)&xx;
    val = x1[0];

Как записать число типа long в EEPROM ?

 

Вопрос по 74HC595

Собственно собирал схему по уроку из http://arduino.ru/Tutorial/registr_74HC595 для одного регистра

И у меня возникла проблема: контакт который обозначен за Q0 (самый младший бит) моргает всего на несколько милисекунд, что его еле видно (- если это цикл по примеру 1.1). При этом другие контакты работают на ура и все хорошо светится. И самое главное, если Q0 попытаться включить вне цикла, то он светится хорошо. Подскажите что это за глюк?

Создание массива ШИМ (PWM) значений.

Здравствуйте! В описании по программированию ардуино есть тема "Управление портами через регистры Atmega"

Там есть вот такой маленький пример.

DDRD = B11111110;  // назначает выводы Arduino 1-7 выходными, вывод 0- входным
PORTD = B10101000; // устанавливает HIGH на цифровых выводах 7,5,3

Каким образом можно вместо двоичных значений установить значения функции analogwrite? Чтобы выглядело примерно так.

Помогите составить скетчик, пожалуйста.

Появилась нужда в том, чтобы понять как настраивать шаговый двигатель с помощью ардуино и uim24004. Поиск в гугле не помог разобраться. Помогите набросать простенькую программу для запуска, реверса с возможностью смены скорости шагового двигателя. Сам что-то тугодумлю. Буду очень признателен.

Не выводится строка из переменных...

В коде формируется строка из переменных  вида :

statusHome = String("T_out_1-") + long(temp_out_1) + String(" V_out_1-") + int(vlazhnost_out_1) + String(" D-") + int(davlenie) + String(" T_in_1-") + long(temp_in_1) + String(" V_in_1-") + int(vlazhnost_in_1) + String(" A_t-") + int(auto_temp);

Если несколько значений равны 0, то строка выводится в сериал, если все значения отличны от 0, то строка не выводится совсем. Подскажите пожалуйста, в чем причина?