А какой у нее логический уровень ? Случайно не 3.3в ?
Обратите внимание на стабилизатор который установлен на плате.
У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00
Паяльник |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Паяльник » Микроконтроллеры » Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность
А какой у нее логический уровень ? Случайно не 3.3в ?
Обратите внимание на стабилизатор который установлен на плате.
У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00
Подозреваю, что у меня скетч не заливается
Может быть сигнал DTR нужно подавать на RST ардуины про через конденсатор?
У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00
Что то не подключено или Bootloader нет.
Чем заливаете ?
Этим ?
Вот ссылочка по нему http://blog.tarn-vedra.de/posts/using-cp2102.html
Отредактировано Technik (2016-04-06 23:48:27)
Если такого нет, можно подключить через любой USB-TTL конвертер без DTR, подключить к RX/TX/GND и заливать скетч как обычно через Arduino IDE. После нажатия RESET программа, находящаяся в загрузчике ждет некоторое время начала загрузки новой программы с последовательного порта.
Если ничего с порта не пришло, запускается программа, загруженная ранее.
То есть для программирования нужно перед самой загрузкой нажать RESET.
Чем заливаете ?
Заливаю вот этим
http://www.mini-tech.com.ua/index.php?r … uct_id=386
Может все же DTR к RST нужно подключать через конденсатор?
Вручную ловить момент загрузки очень неудобно, сноровка нужна.
То есть для программирования нужно перед самой загрузкой нажать RESET.
попробую
не получается залить никак
Кто может подсказать где можно уменьшить скорость COM порта?
решил вопрос заливки в Ардуино про 328, подключил так
преобразователь ардуино
DTR GRN
TXD RXI
RXD TX0
GND GND
5V VCC
может кому то понадобится
С ардуино про 168 удалось залить скетч только с помощью программатора
вот такие они китайцы
Всем спаибо за участие
USB-TTL на базе CP2102 <> Arduino Pro mini Atmega328
Подключение:
DTR - DTR
RX - TX
TX - RX
VCC - VCC
GND - GND
Выбираем плату:
Сервис - Плата - Arduino Pro or Pro mini (5v, 16Mhz) w/Atmega328
Файл - Загрузить !
Все заливается
Если такого адаптера нет в наличии, можно использовать плату Arduino Uno (без контроллера) в качестве адаптера
Подключение:
UNO Mini
Reset - DTR
RX0 - RX
TX1 - TX
5v - VCC
GND - GND
У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00
Попробуйте выбрать нужную плату
не получается залить никак
Кто может подсказать где можно уменьшить скорость COM порта?
Втыкаем адаптер в USB
Система - Диспетчер устройств
Порты COM и LPT
Клацаем по нашему TTL-адаптеру правой кнопкой мыши
Свойства - Параметры порта
к проекту прикрутил газовый датчик MQ2
кому интересно .добавляет в шапку
#define analogInPin A0 // ГАЗ
в SETUPe pinMode(analogInPin, INPUT);
в LOOPe int gas = analogRead(analogInPin);
меняем строку
sprintf(string1, ".. %02d.%02d.%02d V %02d.%02d TEMPERATURA VO3DUHA %d~S VLAJNOSTb %i%% GA3 %03d ", TDay, TMonth, TYear, THour, TMinutes, Temp, Hum,gas);
загружаем .радуемся.
можно пищалку добавить и будет вам пожарная сигнализация либо просто контроль чистоты воздуха
эмм ..я шрифт значительно изменил .добавил что нехватало.. но принцип .думаю. всем понятен
Отредактировано valex (2016-05-28 00:54:50)
Valex, На какой газ реагирует MQ-2 ?
Можно взглянуть на ваш массив букв ?
MQ2 заявляется как датчик пропан бутан водород и вроде дым. реагирует также на пары ацетона и дыхание . Массив далек от идеала...правьте как душе угодно. вот весь скетч тыц
Отличная идея, можно еще добавить атмосферное давление.
По поводу датчика газа, на сколько я помню, чтобы он начал выдавать адекватные значения, его надо некоторое время прогреть, поэтому не плохо было добавить паузу в начале.
Не плохо было бы продумать единицы измерения газа, сейчас он будет выдавать от 0-1023, можно отмасштабировать в проценты от 0-100%, при помощи функции map
int val = analogRead(AnalogPin);
val = map(val, 0, 1023, 0, 100); /* Переносим значение с аналогового входа (возможные значения от 0 до 1023) в 8 бит (0..100) */
пркрутил к проекту 2й DHT градусник. Точнее градусник предполагаете на улице и передача данных организована с помощью радиомодулей 433МГц. Использовал http://arduinolab.pw/index.php/tag/433mhz/. Скетч передатчика найдете там же.
Да и в железе не тестил пока
вот https://yadi.sk/d/yU6Z1kmOsrmqS
Отредактировано valex (2016-06-28 22:21:40)
Valex, как результаты ? тестил уже в железе ?
да тестил.. что то криво. Пока отложил
SyrBrandon
Спасибо за проект! Очень заинтересовал в качестве часов (как основа), и отображение температуры и влажности, как отличное дополнение. Но вот не задача: можно ли как-то отображение часов притормаживать на матрицах какое-то время?
Отображение строки времени вынес в отдельную строку, но получается только регулировать скорость ее пробегания..
Что Вы подразумеваете под "притормаживать" ? Изменять скорость бегущей строки в произвольном месте в плоть до ее полной остановки ?
Или вот такой вариант
SyrBrandon
Да, именно останавливать бегущую строку на времени.
Получилось только в таком виде, но момент смены минут, часы на дисплее это не фиксируют. И хотел прикрутить отображение дня недели, но DayOfWeek не принимает компилятор..
void setup(){
m.init(); // module initialize
m.setIntensity(0); // dot matix intensity 0-15
Serial.begin(9600); // serial communication initializeWire.begin(); // RTC_DS1307
RTC.begin();dht.begin(); // DHT-11
}void loop(){
int Temp = dht.readTemperature();
int Hum = dht.readHumidity();DateTime now = RTC.now();
int TDay=now.day();
int TMonth=now.month();
int TYear=now.year();
int THour=now.hour();
int TMinutes=now.minute();delay(100);
m.shiftLeft(false, true);
char string1[] = " Hello, my name is Vadim ... ";
sprintf(string1, "CEGODHZ %02d.%02d.%02d TEMPERATURA VO3DUXA %d~C VLAJHOCTb %i%% ", TDay, TMonth, TYear, Temp, Hum);
printStringWithShift(string1, 30);
char string2 [] = "Time" ;
sprintf(string2, " %02d:%02d " , THour, TMinutes);
printStringWithShift(string2, 30);
delay (1000);
}
Можно останавливать при помощи millis(), но придется точно подсчитать где у Вас то место где требуется остановка
В самой строке добавить маркер скорости (на подобии музыкальных нот), но придется делать распарсинг строки
По поводу дня недели тут нет ничего сложного, попробуйте так:
char DayofWeek[][4]={"SUN","MON","TUE","WED","THU","FRI","SAT"};
DateTime now = RTC.now();
int TDayofWeek=now.dayOfWeek();
int TDay=now.day();
int TMonth=now.month();
int TYear=now.year();
int THour=now.hour();
int TMinutes=now.minute();
Serial.print(DayofWeek[TDayofWeek]);
SyrBrandon
не принимает DayOfWeek не в какую, пишет неизвестный параметр.
По поводу остановки показаний сделал следующее:
/*
################################################################################
# File Name: MAX7219_5.ino
# Board: Arduino UNO
# Programming Language: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objective: Scrolling LED dot Matrix
#
# Operation: Scrolls a message over a 16x8 LED dot matrix
#
# Author: Marcelo Moraes
# Date: July 9th, 2013
# Place: Sorocaba - SP - Brazil
#
################################################################################This code is a public example.
*///******************************************************************************
// visit this web page for further information about MaxMatrix library
// https://code.google.com/p/arudino-maxmatrix-library/
//******************************************************************************
// Шапку из оригинала исходника сохранил, остальное будут переделки#include "DHT.h"
#include <MaxMatrix.h>
#include <avr/pgmspace.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#define DHTPIN 2 // DHT-11 out
#define DHTTYPE DHT11 // тип DHT-11
DHT dht(DHTPIN, DHTTYPE);PROGMEM prog_uchar CH[] = {
3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space
1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !
3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "
5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #
4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $
5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %
5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &
1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '
3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (
3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )
5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *
5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +
2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,
4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -
2, 8, B11000000, B11000000, B00000000, B00000000, B00000000, // .
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
4, 8, B01111110, B10000001, B10000001, B01111110, B00000000, // 0
3, 8, B10000010, B11111111, B10000000, B00000000, B00000000, // 1
4, 8, B11000010, B10100001, B10010001, B10001110, B00000000, // 2
4, 8, B01000001, B10000101, B10001011, B01110001, B00000000, // 3
4, 8, B00111000, B00100100, B00100010, B11110001, B00000000, // 4
4, 8, B01001111, B10001001, B10001001, B01110001, B00000000, // 5
4, 8, B01111110, B10001001, B10001001, B01110000, B00000000, // 6
4, 8, B11100001, B00010001, B00001001, B00000111, B00000000, // 7
4, 8, B01110110, B10001001, B10001001, B01110110, B00000000, // 8
4, 8, B00001110, B10010001, B10010001, B01111110, B00000000, // 9
2, 8, B00100100, B00000000, B00000000, B00000000, B00000000, // :
2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;
3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <
3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =
3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >
4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?
5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @
4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A
4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C
5, 8, B01100000, B00111111, B00100001, B00111111, B01100000, // Д
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
4, 8, B01111111, B00000001, B00000001, B00000001, B00000000, // Г
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
5, 8, B01111111, B00010000, B00001000, B00000100, B01111111, // И
5, 8, B01100011, B00010100, B01111111, B00010100, B01100011, // Ж
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
4, 8, B01111110, B00000001, B00000001, B01111111, B00000000, // Л
5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M
5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O
4, 8, B01111111, B00000001, B00000001, B01111111, B00000000, // П
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P
4, 8, B00100010, B01001001, B01001001, B00110110, B00000000, // S
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
4, 8, B01000111, B01001000, B01001000, B00111111, B00000000, // У
4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W
5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X
5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y
4, 8, B01000110, B00101001, B00011001, B01111111, B00000000, // Я
2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [
4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash
2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]
3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat
4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _
2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `
4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a
4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b
4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c
4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d
4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e
3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f
4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g
4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h
3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i
4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j
4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k
3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l
5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m
4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n
4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o
4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p
4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q
4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r
4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s
3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t
4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u
5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v
5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w
5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x
4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y
3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z
3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {
1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |
3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }
4, 8, B00000010, B00000101, B00000010, B00000000, B00000000, // ~ градус
};int data = 11; // DIN pin of MAX7219 module
int load = 10; // CS pin of MAX7219 module
int clock = 13; // CLK pin of MAX7219 moduleint maxInUse = 4; //change this variable to set how many MAX7219's you'll use (5)
MaxMatrix m(data, load, clock, maxInUse); // define module
byte buffer[10];
void setup(){
m.init(); // module initialize
m.setIntensity(4); // dot matix intensity 0-15
Serial.begin(9600); // serial communication initializeWire.begin(); // RTC_DS1307
RTC.begin();dht.begin(); // DHT-11
//RTC.adjust(DateTime(__DATE__, __TIME__)); //установка времени
}
void loop(){
int Temp = dht.readTemperature();
int Hum = dht.readHumidity();DateTime now = RTC.now();
int TDay=now.day();
int TMonth=now.month();
int TYear=now.year();
int THour=now.hour();
int TMinutes=now.minute();delay(100);
m.shiftLeft(false, true);
char string2[] = " " ;
sprintf(string2, "BREMZ: %02d:%02d " , THour, TMinutes);
printStringWithShift(string2, 30);
delay (30000);
char string1[] = " ... ";
sprintf(string1, "CEGODHZ %02d.%02d.%02d ", TDay, TMonth, TYear);
printStringWithShift(string1, 30);
char string3[] = " ... ";
sprintf(string3, " TEMPERATURA VOSDUXA %d~C ", Temp);
printStringWithShift(string3, 30);
delay (1000);char string4[] = " ... ";
sprintf(string4, " VLAJHOCTb %i%% ", Hum);
printStringWithShift(string4, 30);
delay (1000);
}void printCharWithShift(char c, int shift_speed){
if (c < 32) return;
c -= 32;
memcpy_P(buffer, CH + 7*c, 7);
m.writeSprite(maxInUse*8, 0, buffer);
m.setColumn(maxInUse*8 + buffer[0], 0);for (int i=0; i<buffer[0]+1; i++)
{
delay(shift_speed);
m.shiftLeft(false, false);
}
}void printStringWithShift(char* s, int shift_speed){
while (*s != 0){
printCharWithShift(*s, shift_speed);
s++;
}
}void printString(char* s)
{
int col = 0;
while (*s != 0)
{
if (*s < 32) continue;
char c = *s - 32;
memcpy_P(buffer, CH + 7*c, 7);
m.writeSprite(col, 0, buffer);
m.setColumn(col + buffer[0], 0);
col += buffer[0] + 1;
s++;
}
}
отображение времени вынесено в отдельную строку с параметром delay.
Также сделал и для температуры с влажностью.
Увеличил шрифт цифр 5*8.
Как бы сделать, что бы еще показания часов обновлялись, когда сменяется минута... Частота бегущей строки нужна максимум один раз в 1-2 минуты, а за это время показания часов остаются старыми. Понимаю, что нужно совсем другой код писать, но в этом я пока ноль(
Функция DayofWeek, пишется dayOfWeek(); в среде Arduino IDE имеется разница в написании заглавных и строчных букв.
По поводу строк, я бы еще разбил, отдельно на строку содержащую только время, и перед ней производил обновления времени, по скольку пока строка бежит, время уже может изменится.
Примерно так:
char string4[] = " ... "; sprintf(string4, "CEGODHZ %02d.%02d.%02d BREMZ: ", TDay, TMonth, TYear); printStringWithShift(string1, 30); DateTime now = RTC.now(); int TDay=now.day(); int TMonth=now.month(); int TYear=now.year(); int THour=now.hour(); int TMinutes=now.minute(); char string5[] = " " ; sprintf(string5, " %02d:%02d " , THour, TMinutes); printStringWithShift(string2, 30); delay (30000);
Обновление времени сделать в отдельной процедуре, чтобы не загромождать основной код.
Если же Вы хотите чтобы время обновлялось (секунды) прямо во время движения бегущей строки, то да, это будет другой код.
Technik
так оно и минуты не обновит, если задержку поставить более 60000 мс. (60 сек) за это время минута может уже и поменяться. Это будет заметно при эксплуатации. Вообще, хочу использовать данный проект именно как часы с периодическим выводом температуры, влажности, а также температуры и давления за окном (хочу прикрутить датчик BMP180).
А как бегущая строка проект работает идеально.
Зачем ставить задержки ? это же затормаживает работу основного цикла. Используйте millis() или готовую библиотеку TimerOne http://robocraft.ru/blog/arduino/614.html
unsigned long oldMillis = 0 // переменная времени
loop:
if (millis() - oldMillis > 60000) // если прошло 60 сек, то
{ // здесь наше действие
oldMillis = millis(); // Засекаем снова
}
Отредактировано Lastik (2016-09-23 20:08:37)
Пример подключения светодиодных матриц к MAX7219 http://radiolaba.ru/microcotrollers/pod … x7219.html
Вы здесь » Паяльник » Микроконтроллеры » Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность