Архив метки: Arduino

Исправление косяков ethernet shield w5100

Купил у китайцев Ethernet shield w5100.
Подключаю к плате Arduino MEGA 2560, прошиваю скетч Web Server из примеров.
Иду по адресу 192.168.1.177 . Не работает.

Светодиоды LINK, 100M светятся. Передачи данных нет.
Меняю Arduino MEGA на Arduino UNO. Не работает.
Меняю версию IDE. Не работает.
Нахожу еще один такой-же Ethernet шилд, но заведомо рабочий (снят с рабочего макета). Подключаю к своей плате. Не работает.

Лезу в интернет. Нахожу информацию о том, что Ethernet shield w5100 не дружит с оборудованием D-Link.
У меня как раз свитч D-Link DES-1008D. Проверяю на доступных TP-LINK WR841ND, Asus RT-N13U — не работает!

Нашел свитч, в котором этот капризный шилд заработал.

Опять сходил в интернет. Нашел совет, проверить резистор (сборку) у входа Ethernet.
Китайцы могут впаять вместо 510 (51 Ом) сборку 511 (510 Ом). Они-же похожи 🙂
У меня оказалось впаяно неверное сопротивление.

не работает ethernet shield w5100 ? проверяй резистор.

Перепаял. Все сразу-же заработало!

PS. Резисторы 510 можно искать на старых материнках. У меня все работает с 560 резистором (56 Ом).
Чем такого микроба паять? Термовоздушная паяльная станция.
Паяльником — я бы не совался. Кто сумеет — молодец. Научи.

Автор: dim.medvedev
Дата публикации: 2016-02-24T14:05:00.001-08:00

Распиновка ATMEGA328

Часто приходится подсматривать в даташит к ATMEGA328 где какой пин находится.

Нашел для себя отличную диаграмму распиновки контроллера.
Взято отсюда http://www.pighixxx.com/

Автор: dim.medvedev
Дата публикации: 2015-03-11T01:22:00.005-07:00

Русские буквы LCD Nokia 5110

Краткая инструкция по «русификации» LCD Nokia 5110.

  1. Скачать файл шрифта русский шрифт
  2. Обозвать скачаный файл glcdfont-rus.c и положить его в папку …librariesAdafruit_GFX
  3. Изменить в файле Adafruit_GFX.cpp строку #include «glcdfont.c» на #include «glcdfont-rus.c»
  4. Кодировка редактора IDE Arduino utf-8, для корректной работы с кириллицей на LCD нужно настроить перекодирование в cp1251. Для этого в файле preferences установить preproc.substitute_unicode=false


Теперь можно писать прямо в IDE на кириллице и видеть символы кирилицы экране.

ps. файл preferences редактировать только когда IDE не запущен. Иначе внесенные изменения перетрутся.

Информация взята из http://habrahabr.ru/post/242957/

Автор: dim.medvedev
Дата публикации: 2015-03-11T01:08:00.000-07:00

Изменение частоты ШИМ.

Стандартная частота ШИМ в плате ардуино на 5 и 6 пинах 976 Гц.
Для изменения частоты ШИМ  на пинах 5 и 6 в ардуино, используется следующая команда:

TCCR0B = TCCR0B & 0b11111000 | 5;     // константа 5 это делитель 1024, получаем частоту 61 Гц.

Другие частоты ШИМ можно выставить делителями согласно табличке.
Константа   Делитель          Частота(Гц)

   0x01           1              62500
   0x02           8              7812.5
   0x03          64              976.5625
   0x04         256              244.140625
   0x05        1024              61.03515625


Ок, поставил частоту 61 гц. Вгружаю скетч. 
На екране (использую LCD Nokia 5110) вижу ненормальное поведение программы.  Все «замерло».
Оказывается — установленный мною делитель, действует также на системный таймер. Функции delay(), milis(), micros() и работает тоже с измененным делителем частоты. Delay(1000) — сделает задержку не на 1 секунду!!! Моя программа выполняется намного дольше, чем задумано.
Пришлось ШИМ-у пересаживатся на 3-пин. Его делитель частоты не трогает ситемный таймер.

Автор: dim.medvedev
Дата публикации: 2015-03-11T00:05:00.000-07:00

Подключение к Arduino различных элементов

RGB светодиод с общим катодом

Самая длинная ножка — катод, его подключаем на GND (земля). Остальные ножки отвечают за конкретный свет; их подключаем через резистор на 1 КОм на ШИМ (PWM) выход. Слева от катода одна ножка; отвечает за красный свет; подключаем через резистор, например, на D11. Справа от катода ножка, отвечающая за зелёный свет; подключаем через резистор, например, на D10. Последня ножка отвечает за синий свет; подключаем через резистор, например, на D9.
Пример плавного зажигания (и гашение) красного света:


int ledRed = 11;
int ledGreen = 10;
int ledBlue = 9;
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  {
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledBlue, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
// set the brightness of pin 9:
analogWrite(ledRed, brightness);
analogWrite(ledGreen, 0);
analogWrite(ledBlue, 0);

// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;

// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

Инфракрасный приёмник

Мой образец у продавца назывался «VS1838 TL1838 VS1838B Universal Infrared Receiving Head For Remote control». Этот экземпляр подключается к arduino не так, как в статье Arduino Uno. Подключение ИК-приемника, но программу для считывания значений я применил оттуда (библиотеку IRremote качать по ссылке из той статьи):


#include "IRremote.h"
IRrecv irrecv(11); // Указываем пин, к которому подключен приемник
decode_results results;
void setup() {
  Serial.begin(9600); // Выставляем скорость COM порта
  irrecv.enableIRIn(); // Запускаем прием
}
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли
  {
    Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
    irrecv.resume(); // Принимаем следующую команду
  }
}

Согласно этой программе, первую ногу ИК приёмника подключаем на цифровой пин 11. Среднюю ногу подключаем и к катоду (минус, короткая ножка) конденсатора на 10 микрофарад, и к земле (порт GND на arduino). Третью ногу через резистор на 100 Ом подключаем и к аноду (плюс, длинная ножка) того же конденсатора, и к 5V на arduino. Всё, можно запускать и наблюдать в консоли коды нажимаемых кнопок с любых инфракрасных пультов.

LCD экран 2 строки 16 символов через I2C

Мой экземпляр у продавца назывался «Blue Display IIC/I2C/TWI/SP​​I Serial Interface 1602 16X2 Character LCD Module». Продавец в описание продукта любезно добавил ссылку на библиотеку и пример. Для того, чтобы сэкономить пины на Arduino, на обратной стороне экранчика установлена плата для конвертации в I2C. Благодаря этому подключается мониторчик к arduino всего четырьмя проводками. Земля (GND), питание (VCC экрана на 5V), SDA (data экрана на A4), SCL (clock экрана на A5). Подробности по экранчику и указанный способ подключения почерпнул в статье «Arduino UNO урок 11 — Serial LCD«.
Пример программы из архива, рекомендованного продавцом:


//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include
#include LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
  lcd.init();                      // initialize the lcd
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}
void loop() {
}

Предварительно скопировал всю папку LiquidCrystal_I2C с примером и библиотекой в свою папку библиотек: /home/oleg/sketchbook/libraries/

Автор: Олег Ехлаков