Делаем из cc2541, модуль hm-10

Возникла задача купить быстро в РФ hm-10, но с чеками.Быстро нашелся магазин http://arduinobazar.ru/ .Магазин конечно не порадовал ценами, но хоть модуль был в наличии.Модуль на фотографии оказался не hm-10, а модуль с чипом cc2541.Хотя данные модули построены на том же чипе.У них есть два существенных отличия.

1.Это наличие второго кварца.Данное отличие видно сразу.

sku_378853_3

На модулях cc2541 это два залуженных пятака.На них должен был быть припаян кварц на 32.768 кГц.Кварц smd.Подходят кварцы ABS07-32.768KHZ-9-T  и ABS07-32.768KHZ-7-T.В целом любой корпусом 9PF или ему близкий.Также  возможно отсутствие двух конденсаторов на 12-15 pF.Их тоже надо припаять.Для понимания вот схема от TI с двумя кварцами http://www.ti.com/lit/df/tidr489/tidr489.pdf

2.Не отвечает на AT команды.Действительно модуль может быть виден в сети bluetooth, и даже подключаться, но AT команды он не отвечает.Это проблема связана с тем что единственный производитель HM-10, а именно не произносимая компания JNHuaMao Technology Company.Прошивает их на заводе своей фирменной прошивкой, в которой реализована работа с AT командами.

Фото оригинального hm-10 с распиновкой

hm-10-pinout

Урок 24.Джойстик.Ода два

В прошлом уроке мы выводили данные о перемещении рукоятки джойстика в консоль.При положении джойстика в положении 90 градусов.В консоль выводились значения от 510 до 525.Это потому-что потенциометр находится в средних значениях.Мы постараемся решить это с помощью логики.Все значения джойстика условно можно поделить на два типа.Либо меньше около 500, либо больше.Поэтому в «монитор порта» мы будем выводить именно эти данные.Только слова.

Запрограммируем arduino следующим кодом:

const byte PIN_ANALOG_X = 0;
const byte PIN_ANALOG_Y = 1;

const int X_THRESHOLD_LOW = 505;
const int X_THRESHOLD_HIGH = 515;

const int Y_THRESHOLD_LOW = 500;
const int Y_THRESHOLD_HIGH = 510;

int x_position;
int y_position;

int x_direction;
int y_direction;

void setup() {
Serial.begin(9600);
}

void loop () {
x_direction = 0;
y_direction = 0;

x_position = analogRead(PIN_ANALOG_X);
y_position = analogRead(PIN_ANALOG_Y);

if (x_position > X_THRESHOLD_HIGH) {
x_direction = 1;
} else if (x_position < X_THRESHOLD_LOW) {
x_direction = -1;
}

if (y_position > Y_THRESHOLD_HIGH) {
y_direction = 1;
} else if (y_position < Y_THRESHOLD_LOW) {
y_direction = -1;
}

if (x_direction == -1) {
if (y_direction == -1) {
Serial.println(«left-down»);
} else if (y_direction == 0) {
Serial.println(«left»);
} else {
// y_direction == 1
Serial.println(«left-up»);
}
} else if (x_direction == 0) {
if (y_direction == -1) {
Serial.println(«down»);
} else if (y_direction == 0) {
Serial.println(«centered»);
} else {
// y_direction == 1
Serial.println(«up»);
}
} else {
// x_direction == 1
if (y_direction == -1) {
Serial.println(«right-down»);
} else if (y_direction == 0) {
Serial.println(«right»);
} else {
// y_direction == 1
Serial.println(«right-up»);
}
}
}

 

 

 

Урок 23.Джойстик

В этом уроке мы рассмотрим джойстик.Для начала соединим джойстик с платой по заданной схеме:

Так как в качестве рабочих элементов у джойстика применяются потенциометры, то считывать мы будем изменение сопротивления.Поэтому подключаем джойстик двум аналоговым сигналам, согласно осям.

Запрограммируем arduino следующим кодом:

const byte PIN_ANALOG_X = 0;//ось х подключаем к а0
const byte PIN_ANALOG_Y = 1;//ось у подключаем к а1

void setup() {
Serial.begin(9600);//настраиваем порт
}

void loop() {

Serial.print(«x:»);//считываем
Serial.print(analogRead(PIN_ANALOG_X));//считываем
Serial.print(» «);//выводим

Serial.print(«y:»);//считываем
Serial.print(analogRead(PIN_ANALOG_Y));//считываем
Serial.print(» «);//выводим

Serial.println();
}

ble link или что за ble в xbee?

Если у вас уже есть arduino uno или mega, то с помощью xbee shield и ble-link вы сможете превратить свой контроллер в полноценную bluno плату.

Характеристики

Bluetooth чип: Т. CC2540
Частота: 2,4 ГГц
Скорость передачи: ≤1Mbps
Модуляция: GFSK, Bluetooth с низким энергопотреблением, V4.0
Потребляемая мощность: рабочий: 10.6mA среднем режиме готовности: 8.7mA
Чувствительность: -93dB
Входное напряжение: DC 3,3
Рабочая температура: -40 ℃ ~ + 85 ℃
Расстояние передачи: 15 ~ 20 м в помещении (30 м в свободном пространстве)
Размер: 32мм * 22мм
поддержка команд AT для отладки
поддерживать мастер-слейв режимы
поддержка «Bluetooth Remote» обновление программы Arduino (только поддерживать uno и Arduino mega)
Поддержка обновления программы через usb, BLE чипа
Поддержка Bluetooth HID
Поддержка Android и IOS приложений, с открытым исходным кодом, пригодные для вторичного развития пользователем

Распиновка

600px-BLE-Link_detail

BLE-LINK распиновка

Необходимые инструменты

BLE-Link
Android или IOS
Кабель Micro USB для питания

Попробуем настроить модуль

Необходимые инструменты

ble link x1
Android-устройство или IOS устройство x1
Кабель Micro USB

1.Запрограммируем arduino следующим кодом:

void setup() {
Serial.begin(115200); //Настраиваем порт
}

void loop() {
if (Serial.available()) {
Serial.write(Serial.read());//Читаем данные
Serial.println(); //И выводим данные в порт
}
}

2. Загрузите скетч.

Для Android
1.Скачайте: https://cloud.mail.ru/public/Ez28/VkQuLRnCy и установите приложение.

2. Запустите приложение.

3. Нажмите кнопку «Сканировать» и выберите устройство «bluno».

4. После подключения нажмите на кнопку «Отправить данные» , чтобы отправить сообщение в текстовом поле в Ble link.

5. Нажмите «отправить».

Для IOS
1. Cкачайте исходники приложения: https://cloud.mail.ru/public/GGg4/7Pv13foNz

2. Запустите приложение.

3. Нажмите кнопку «Поиск»  для поиска и выбора устройства.

4. После изменения состояния соединения с «Не готов!» в  «Ready!», нажмите кнопку «Отправить» , чтобы отправить сообщение в текстовом поле  в Ble link.

5. Обратите внимание, на то  что при соединении модуля будет постоянно гореть link.

Как залить прошивку через bluetooth на arduino?

Необходимые инструменты

BLE link x1
Кабель Micro USB x1

1.С помощью «монитора порта» arduino ide отправьте следующие команды

2. Поверните переключатель в режим  «AT» на модуле.

3. Отправьте следующие команды:

Input : AT+SETTING=DEFCENTRAL<CR+LF> Answer(Return):OK
Input : AT+BLUNODEBUG=OFF<CR+LF> Answer(Return):OK

5. Для периферийной, отправив следующую команду:

Input : AT+SETTING=DEFPERIPHERAL<CR+LF> Answer(Return):OK
Input : AT+BLUNODEBUG=OFF<CR+LF> Answer(Return):OK

6. «AT + BLUNODEBUG = ВЫКЛ» сделает беспроводной плату.

7. Поверните переключатель в режим  «NORM»

8. Отсоедините кабель USB.

9. В течение нескольких секунд, индикатор Link будет на, что означает, что они связаны.

10. Нажмите Загрузить, и эскиз будет успешно загружено на периферийное устройство.

 

Урок 20.Юбилейный и музыкальный

В этом уроке мы рассмотрим звуковоспроизводящие устройство и систему звуковоспроизведения на основе его.И так.Вашему вниманию представляется — зуммер.Зуммер это — сигнальное устройство, пьезоэлектрическое. Типичное применение находят в телефонах, различных оповещателях, устройствах сигнализации, электронных часах, бытовой технике, игрушках.Принцип действия пьезоэлектрических звукоизлучателей построен на использовании пьезоэлектрического эффекта. Часто звук напоминает,  напоминает«пип».

Рассмотрим схему подключения:

Безымянный20

Запрограммируем arduino следующим кодом:

// Создаем ноты для нашей песни
int C = 131;
int D = 147;
int E = 165;
int F = 175;
int G = 196;

// создаем массив для хранения значений
int songNotes[] = {E,E,E,E,E,E,E,G,C,D,E,F,F,F,F,F,E,E,E,G,G,F,D,C};
// создать еще массив для хранения длительности нот
int noteDurations[] = {4,4,2,4,4,2,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,1};

void setup() {
// 1 секунда делится по длине ноты
// регулировки значения 600 может изменить темп
for (int i = 0; i < 24; i ++) {
// играет наш звон раз
// 1 секунда делится по длине ноты
// регулировки значения 600 могут изменить темп
int noteDuration = 600/noteDurations[i];
// посылает сигнал к контакту 10
tone(10, songNotes[i], noteDuration);

// пауза между нотами, чтобы услышать их лучше
// это также может быть использовано для регулировки темпа
int pauseBetweenNotes = noteDuration * 1.3;
delay(pauseBetweenNotes);
// прекращаем игру
noTone(10);
}
}

void loop() {
// цикл не используется
}

Какая песня и что вообще все это значит.Мы расскажем в следующих уроках.Удачи вам.

gsm модуль SIM800L или как можно смс отправить с arduino

Модуль представляет собой чип gsm/sprs sim800l, который позволяет связаться с любым устройством по сотовой сети или выйти в интернет и передать на сторонний сервер.

Модуль обладает следующими характеристиками:
Частота-850/900/1800 / 1900MHz
GPRS подключение class 12: макс скорость передачи 85.6kbps
Мобильная станция класса B
Управляется AT Command 3GPP TS 27.007, 27.005 от SIMCOM
Поддержка часов реального времени
Диапазон напряжения питания 3.4V ~ 4.4V
Поддержка A-GPS
Поддержка 3.0V до 5,0 для работы с сигналами
Низкое энергопотребление, 1 мА в режиме ожидания
Компактный размер 23mm х 35 мм х 5,6 мм
SIM-карта стандарта microsim

Рассмотрим два способа работы с модулем. Первый это взаимодействие с компьютером. Для начала нам необходима программа putty http://putty.org.ru/ Теперь в режиме работы с serial портом, установите значения программатора необходимого для подключения. Но сначала соедините программатор и модуль следующим образом:

GND
+3.3V
Tx
Rx
RST
GND
VCC
Rx
Tx
GRN

Теперь не подавая питания подключаем sim карту. Ждем одну минуту для старта. Теперь открываем консоль и пишем команду «AT».Получаем на нее ответ в виде «OK».

adafruit_products_ATДалее используя список at команд https://cloud.mail.ru/public/5Zo2/hPbWSw4U4

Если вы захотите мне позвонить или написать с помощью модуля, то следует подключить его к блоку питанию.

Второй же способ. Это подключение arduino к модулю. Подключим модуль rx и tx к 7 и 8. Рассмотрим код:

#include <SoftwareSerial.h>
#include <String.h>

SoftwareSerial gprsSerial(7,8);

void setup()
{
gprsSerial.begin(19200); // Cкорость передачи данных модуля
Serial.begin(19200);
delay(500);
}

void loop()
{

if (Serial.available())
switch(Serial.read())
{
case ‘t’:// Если символ ‘T’
SendTextMessage(); // Отправить текстовое сообщение
break;
case ‘d’: // Если символ ‘D’
DialVoiceCall(); // Набираем номер
break;
}
if (gprsSerial.available()){
Serial.write(gprsSerial.read());
}
}
void SendTextMessage()
{
Serial.println(«Sending Text…»);
gprsSerial.print(«AT+CMGF=1\r»);// Установить режим SMS
delay(100);
gprsSerial.println(«AT+CMGS = \»+xxxxxxxxxx\»»);//набираем номер
delay(100);
gprsSerial.println(«Hello elemic»);// содержание сообщения
delay(100);
gprsSerial.print((char)26);//the ASCII code of the ctrl+z is 26 (required according to the datasheet)
delay(100);
gprsSerial.println();
Serial.println(«Text Sent.»);
}

void DialVoiceCall()
{
gprsSerial.println(«ATD+xxxxxxxxxx;»);// набираем номер, он должен включать страну и код оператора
delay(100);
gprsSerial.println();
}

Oled 128х64 или как можно было так издеваться надо дисплеями

Стоит признать что это единственный дисплей, за который не стыдно.

Этот дисплей мал, всего около 1,3 «по диагонали, но  с очень четким из-за высокой контрастности с OLED дисплеем. Этот дисплей выполнен из 128х64 отдельных белых OLED пикселей, каждый из которых управляется с помощью микросхемы контроллера.Поэтому дисплею не нужна подсветка и значим он становится экономичным устройством. Микросхема драйвера, SSD1306 может общаться c помощью: I2C. Сам OLED-требуют 3,3 в питания. Дисплей в при выводе изображения на весь экран, потребляет 40мА. С помощью дисплея можно печатать текст, выводить изображения и различные фигуры.

Характеристики

Размер экрана по диагонали: 1.30 »

Количество пикселей: 128 × 64

Глубина цвета: монохромный (белый)

Вес (г): 2,18

Яркость (кд / м2): 100 (Typ)  12

Вес: 8,5 г

Библиотеки для дисплея можно скачать тут: https://cloud.mail.ru/public/Bbqh/11UJFeFVR

Рассмотрим пример кода для дисплея.

 

#include <OLED_I2C.h>

OLED myOLED(SDA, SCL, 8);

extern uint8_t SmallFont[];

double vectors[8][3] = {{20, 20, 20},{-20, 20, 20},{-20, -20, 20},{20, -20, 20},{20, 20, -20},{-20, 20, -20},{-20, -20, -20},{20, -20, -20}};

double perspective = 100.0f;
int deltaX, deltaY, deltaZ, iter = 0;
long stime, fps = 0, frames = 0;

void setup()
{
randomSeed(analogRead(0));

myOLED.begin();
myOLED.setFont(SmallFont);
}

void loop()
{
stime = micros();
myOLED.clrScr();
drawVectors();
if (iter == 0)
{
deltaX = random(7) — 3;
deltaY = random(7) — 3;
deltaZ = random(7) — 3;
iter = random(250) + 5;
}
rotateX(deltaX);
rotateY(deltaY);
rotateZ(deltaZ);
iter—;
fps += 1000000 / (micros()-stime);
frames++;
myOLED.printNumI(fps / frames, 0, 0, 3); // Print average FPS on screen
myOLED.update();
}

int translateX(double x, double z)
{
return (int)((x + 64) + (z * (x / perspective)));
}

int translateY(double y, double z)
{
return (int)((y + 32) + (z * (y / perspective)));
}

void rotateX(int angle)
{
double rad, cosa, sina, Yn, Zn;

rad = angle * PI / 180;
cosa = cos(rad);
sina = sin(rad);
for (int i = 0; i < 8; i++)
{
Yn = (vectors[i][1] * cosa) — (vectors[i][2] * sina);
Zn = (vectors[i][1] * sina) + (vectors[i][2] * cosa);
vectors[i][1] = Yn;
vectors[i][2] = Zn;
}
}

void rotateY(int angle)
{
double rad, cosa, sina, Xn, Zn;

rad = angle * PI / 180;
cosa = cos(rad);
sina = sin(rad);
for (int i = 0; i < 8; i++)
{
Xn = (vectors[i][0] * cosa) — (vectors[i][2] * sina);
Zn = (vectors[i][0] * sina) + (vectors[i][2] * cosa);
vectors[i][0] = Xn;
vectors[i][2] = Zn;
}
}

void rotateZ(int angle)
{
double rad, cosa, sina, Xn, Yn;

rad = angle * PI / 180;
cosa = cos(rad);
sina = sin(rad);
for (int i = 0; i < 8; i++)
{
Xn = (vectors[i][0] * cosa) — (vectors[i][1] * sina);
Yn = (vectors[i][0] * sina) + (vectors[i][1] * cosa);
vectors[i][0] = Xn;
vectors[i][1] = Yn;
}
}

void drawVectors()
{
myOLED.drawLine(translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]), translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]));
myOLED.drawLine(translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]), translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]));
myOLED.drawLine(translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]), translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]));
myOLED.drawLine(translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]), translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]));
myOLED.drawLine(translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]), translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]));
myOLED.drawLine(translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]), translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]));
myOLED.drawLine(translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]), translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]));
myOLED.drawLine(translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]), translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]));
myOLED.drawLine(translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]), translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]));
myOLED.drawLine(translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]), translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]));
myOLED.drawLine(translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]), translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]));
myOLED.drawLine(translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]), translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]));
}

Дисплей для raspberry pi или что мы ждали

Представляем вам долгожданную новинку, настоящий 3.5 дисплей для raspberry pi.Дисплей поможет вам сделать из вашего микро компьютера, полноценную компактную систему отображения.Дисплей имеет следующую комплектацию:

Модуль-дисплей

Стилус
И следующие характеристики:
Интерфейс: SPI
Разрешение: 480×320
Напряжение питания: 3,3 В
Рабочее напряжение: 3,3 В
Тип тачскрина: резистивный
Контроллер тач-скрина: XPT2046
Диагональ: 3,5 дюйма
Размер модуля: 85×51 мм

Теперь перейдем к установке дисплея:

1) Запустите компакт-диск, поставляемый с модулем. Затем cкопируйте себе файлы с диска.
Файл образа системы, можно скачать отсюда.
http://www.waveshare.net/wiki/DVK512 .
2) Отформатируйте карту SD с помощью  SDFormatter.exe.
Внимание: Возможность SD карты в используется здесь должна быть больше, чем 4 ГБ.
3) Запустите Win32DiskImager.exe и выберите файл образа системы,
затем нажмите кнопку Write.

1Далее после стандартной установки пропатченной версии RASPBIAN WHEEZY.Мы перейдем к установке дисплея.

4) Следующим, вы должны ввести следующую команду, чтобы отключить
функцию последовательного порта отладки:
root@raspberrypi:/# DIS_UART-LCD
5) При использовании Displayer HDMI, вы должны ввести следующую команду для отключения
root@raspberrypi:/# DIS_UART-HDMI
6) При использовании дисплея, вы должны ввести следующую команду, чтобы включить функцию  отладки:
root@raspberrypi:/# EN_UART-LCD
7) При использовании Displayer HDMI, вы должны ввести следующую команду для включения функцию отладки:
root@raspberrypi:/# EN_UART-HDMI
Как работать с 3,5-дюймовым дисплеем?
8) Применить образ системы, описанной в разделе 1.1, и власти до пи.
9) Введите следующие команды для калибровки сенсорного экрана:
pi@raspberrypi:/$ su pi

pi@raspberrypi:/$ DISPLAY=:0.0 xinput_calibrator
10) После выполнения этих команд, будет  для калибровки  четыре точки,
отображаться на экране. Нажмите одну из точек по одному, чтобы закончить калибровку

Получите эти данные для использования в будущем.4
11) Введите следующую команду для редактирования 99-calibration.conf:
pi@raspberrypi:/$ sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

5
12) Измените данные, отмеченные красной линией на рисунке  на новые данные калибровки, которые отобразились при калибровке.

6
13) Нажмите клавиши Ctrl + X, и выберите опцию Y, чтобы сохранить изменения.
14) Изменение вступит в силу после перезагрузки системы. Введите следующую команду:
pi@raspberrypi:/$ sudo reboot
Почему нет изображения из HDMI?
15) Режим по умолчанию загрузочного образа системы  выбирает 3,5 дисплей. И  картинка не будет выводиться через HDMI
В случае, если вы хотите использовать HDMI
дисплей, пожалуйста, выполните следующие команды:
pi@raspberrypi:/$ sudo su

root@raspberrypi:/# HDMI-SYS-SHOW

 

3.2 TFT дисплей или как сексуальные девиации с arduno mega и due

Сразу скажу.Что я не поддерживаю подобные сексуальные девиации с arduino и желаю гореть в аду для тех кто подобное творит и производит.

Представляем самый большой дисплей 3.2 TFT для arduino, продаваемый у нас в магазине.Дисплей позволяет выводить картинки и с помощью сенсорного экрана взаимодействовать с платой.Основным предназначением для платы является организация интерфейса человек-arduino по средствам пальцев.

Дисплей имеет следующие характеристики:
Диагональ: 3,2 дюйма
Рабочее напряжение: 3,3–5 В
Разрешение: 480×320 (RGB)
Интерфейс: 16-битный параллельный
Размер экрана: 70×43 мм
Размер модуля: 90×54 мм

Дисплей подключается к arduino по spi.Работает модуль только с arduino mega 2560 или arduino due.

Рассмотрим тестовый код для вывода фразы на дисплее:

Для работы мы используем специальные библиотеки UTFT

https://cloud.mail.ru/public/34HP/miJ5p33dH  — основные библиотеки

https://cloud.mail.ru/public/JrzA/pEJ7FZmtj  и https://cloud.mail.ru/public/Cfry/mvo6oxYdT — Для работы с sd картой

https://cloud.mail.ru/public/HkEF/SdHVViS6H -Для такскрина

https://cloud.mail.ru/public/4nB6/8SZbNLvXu  Для работы с фигурами

#include <UTFT.h>// Библиотека дисплея
#include <UTFT_Geometry.h> // Библиотека для вывода геометрии

extern uint8_t SmallFont[];// выбираем шрифт.Всего можно выбрать из трех шрифтов, которые следуют в порядке возрастания размеров знака:SmallFont – 95 символов 8×12, BigFont – 95 символов 16×16,SevenSegNumFont – 10 цифровых символов 32×50

UTFT myGLCD(ITDB32S,38,39,40,41);// задействуем следующие пины

UTFT_Geometry geo(&myGLCD);// создаем объект

void setup()
{
myGLCD.InitLCD();// Обозначаем объекты
myGLCD.setFont(SmallFont);// Выбираем шрифт

myGLCD.setBackColor(VGA_BLACK);
}

void clearField()
{
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(1,15,318,224);
}

void loop()
{
int x1,x2,x3,y1,y2,y3,r,as,ae;
long smillis = millis();

myGLCD.clrScr();
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(0, 0, 319, 13);
myGLCD.setColor(VGA_GRAY);
myGLCD.fillRect(0, 226, 319, 239);
myGLCD.setColor(VGA_WHITE);
myGLCD.setBackColor(VGA_RED);
myGLCD.print(«*** UTFT Geometry ***», CENTER, 1);
myGLCD.setBackColor(VGA_GRAY);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print(«<http://electromicro.ru//>», CENTER, 227);

myGLCD.setColor(VGA_BLUE);
myGLCD.drawRect(0, 14, 319, 225);

myGLCD.setColor(VGA_LIME);
geo.drawArc(160,240,210,-40,40,3);
for (int i=-40; i<=40; i+=8) geo.drawArc(160,240,205,i,i,10); int l = 0; for (int i=0; i>=-40; i-=1)
{
myGLCD.setColor(VGA_BLACK);
geo.drawArc(160,240,110,l,l,170);
l=i;
myGLCD.setColor(VGA_YELLOW);
geo.drawArc(160,240,110,i,i,170);
delay(40-abs(i));
}
for (int i=-40; i<=40; i+=1) { myGLCD.setColor(VGA_BLACK); geo.drawArc(160,240,110,l,l,170); l=i; myGLCD.setColor(VGA_YELLOW); geo.drawArc(160,240,110,i,i,170); delay(40-abs(i)); } for (int i=40; i>=0; i-=1)
{
myGLCD.setColor(VGA_BLACK);
geo.drawArc(160,240,110,l,l,170);
l=i;
myGLCD.setColor(VGA_YELLOW);
geo.drawArc(160,240,110,i,i,170);
delay(40-i);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=2+random(316);
y1=16+random(207);
x2=2+random(316);
y2=16+random(207);
x3=2+random(316);
y3=16+random(207);
geo.drawTriangle(x1, y1, x2, y2, x3, y3);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=2+random(316);
y1=16+random(207);
x2=2+random(316);
y2=16+random(207);
x3=2+random(316);
y3=16+random(207);
geo.fillTriangle(x1, y1, x2, y2, x3, y3);
}

delay(2000);
clearField();
for (int i=0; i<50; i++)
{
myGLCD.setColor(random(255), random(255), random(255));
x1=32+random(256);
y1=45+random(146);
r=10+random(20);
as=random(360);
ae=random(360);
geo.drawPie(x1, y1, r, as, ae);
}

delay(2000);

myGLCD.fillScr(VGA_BLUE);
myGLCD.setColor(VGA_RED);
myGLCD.fillRoundRect(80, 70, 239, 169);

myGLCD.setColor(VGA_WHITE);
myGLCD.setBackColor(VGA_RED);
myGLCD.print(«That’s it!», CENTER, 93);
myGLCD.print(«Restarting in a», CENTER, 119);
myGLCD.print(«few seconds…», CENTER, 132);

myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(0, 220, 319, 239);
myGLCD.setColor(VGA_LIME);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.print(«Processing time: (msecs)», LEFT, 225);
myGLCD.printNumI(millis()-smillis-11120, RIGHT, 225);

delay (1000);
}

После прошивки arduino и подключением дисплея вы увидите:

DSCN0782[1]

Проблема с devkit esp8266 и ее решение.

На днях клиент магазина принес для разъяснения ситуацией c частичной неработоспособностью dev kit esp8266.

esp8266_devkit

Подключил к питанию через преобразователь на ch340g

usbtottl_ch340g_web1 usbtottl_ch340g_web2 usbtottl_ch340g_web3

Wi-fi сеть есть и даже выдаются айпишники. Плата отваливалась по telnet и мониторе порта.Проверили соединение преобразователя с платой.

(RX <-> TX, TX <-> RX,  и соответственно питание.

Решили пока взять nodemcu от греха подальше.Тем более клиенту он больше нравился.Соединили.Все тоже самое.Неожиданно отчаявшись решили переустановить драйвера ch340g..Данное решение было получено методом исключения.Переустановили.Драйвера лежат ниже со ссылкой на магазин.Во флешере наконец стало отвечать. плата https://github.com/nodemcu/nodemcu-flasher сам флешер. Решили пере прошить для первой работы.Пошла пере прошивка.Попробовали подключиться.И все работает.Проверяли на базовой команде для проверки node.info().Данные команды вводили в putty.Сама putty http://putty.org.ru/get/PuTTY-0.63-RU-15.zip/from/a/mirror .Клиент забрал и ушел.Желание разобраться с devkit не угасло.Позже методом исключения решил пропаять все выводы с wi fi модулем и все заработало.Проверил всю партию.Слава Сатане что она одна такая.

Магазинчик http://electromicro.ru/

Драйвер ch340g http://electromicro.ru/filemanager/download/1209/