Паяльник

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Паяльник » Микроконтроллеры » Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность


Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность

Сообщений 61 страница 90 из 97

61

SyrBrandon написал(а):

А какой у нее логический уровень ? Случайно не 3.3в ?
Обратите внимание на стабилизатор который установлен на плате.

У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00

0

62

Подозреваю, что у меня скетч не заливается
Может быть сигнал DTR нужно подавать на RST ардуины про через конденсатор?

0

63

3valery написал(а):

У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00

Что то не подключено или Bootloader нет.

Чем заливаете ?

Этим ?

http://s7.uploads.ru/t/oYUJC.png

Вот ссылочка по нему http://blog.tarn-vedra.de/posts/using-cp2102.html

Отредактировано Technik (2016-04-06 23:48:27)

0

64

Если такого нет, можно подключить через любой USB-TTL конвертер без DTR, подключить к RX/TX/GND и заливать скетч как обычно через Arduino IDE. После нажатия RESET программа, находящаяся в загрузчике ждет некоторое время начала загрузки новой программы с последовательного порта.
Если ничего с порта не пришло, запускается программа, загруженная ранее.
То есть для программирования нужно перед самой загрузкой нажать RESET.

+1

65

Technik написал(а):

Чем заливаете ?

Заливаю вот этим
http://www.mini-tech.com.ua/index.php?r … uct_id=386
Может все же DTR к RST нужно подключать через конденсатор?
Вручную ловить момент загрузки очень неудобно, сноровка нужна.

+1

66

Technik написал(а):

То есть для программирования нужно перед самой загрузкой нажать RESET.

попробую

0

67

не получается залить никак
Кто может подсказать где можно уменьшить скорость COM порта?

0

68

решил вопрос заливки в Ардуино про 328, подключил так
преобразователь           ардуино
DTR                               GRN
TXD                               RXI
RXD                               TX0
GND                               GND
5V                                VCC
может кому то понадобится

0

69

С ардуино про 168 удалось залить скетч только с помощью программатора
вот такие они китайцы
Всем спаибо за участие

0

70

USB-TTL на базе CP2102 <> Arduino Pro mini Atmega328

http://sg.uploads.ru/t/1ltOq.jpg

Подключение:
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

http://sg.uploads.ru/t/1SBho.jpg

0

71

3valery написал(а):

У меня еще вопрос к Вам
Что означает это сообщение загрузчика
avrdude: stk500_getsync(): not in sync: resp=0x00

Попробуйте выбрать нужную плату

0

72

3valery написал(а):

не получается залить никак
Кто может подсказать где можно уменьшить скорость COM порта?

Втыкаем адаптер в USB

Система - Диспетчер устройств

Порты COM и LPT

Клацаем по нашему TTL-адаптеру правой кнопкой мыши

Свойства - Параметры порта

0

73

к проекту прикрутил газовый датчик 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);
  загружаем .радуемся. http://chpoking.ru/pics/smilies/rofl.gif

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

Отредактировано valex (2016-05-28 00:54:50)

+1

74

Valex, На какой газ реагирует MQ-2 ?
Можно взглянуть на ваш массив букв ?

0

75

MQ2 заявляется как датчик пропан бутан водород и вроде дым. реагирует также на пары  ацетона и дыхание . Массив далек от идеала...правьте как душе угодно. вот весь скетч тыц

0

76

Отличная идея, можно еще добавить атмосферное давление.

По поводу датчика газа, на сколько я помню, чтобы он начал выдавать адекватные значения, его надо некоторое время прогреть, поэтому не плохо было добавить паузу в начале.
Не плохо было бы продумать единицы измерения газа, сейчас он будет выдавать от 0-1023, можно отмасштабировать в проценты от 0-100%, при помощи функции map

int val = analogRead(AnalogPin);
  val = map(val, 0, 1023, 0, 100); /* Переносим значение с аналогового входа (возможные значения от 0 до 1023) в 8 бит (0..100) */

+1

77

пркрутил к проекту 2й DHT градусник. Точнее градусник предполагаете на улице и передача данных организована с помощью радиомодулей 433МГц.  Использовал http://arduinolab.pw/index.php/tag/433mhz/. Скетч передатчика найдете там же.
Да и в железе не тестил пока
вот https://yadi.sk/d/yU6Z1kmOsrmqS

Отредактировано valex (2016-06-28 22:21:40)

0

78

Valex, как результаты ? тестил уже в железе ?

0

79

да тестил.. что то криво. Пока отложил

0

80

SyrBrandon
Спасибо за проект! Очень заинтересовал в качестве часов (как основа), и отображение температуры и влажности, как отличное дополнение. Но вот не задача: можно ли как-то отображение часов притормаживать на матрицах какое-то время?
Отображение строки времени вынес в отдельную строку, но получается только регулировать скорость ее пробегания..

0

81

Что Вы подразумеваете под "притормаживать" ? Изменять скорость бегущей строки в произвольном месте в плоть до ее полной остановки ?

Или вот такой вариант

0

82

SyrBrandon
Да, именно останавливать бегущую строку на времени.
Получилось только в таком виде, но момент смены минут, часы на дисплее это не фиксируют. И хотел прикрутить отображение дня недели, но DayOfWeek не принимает компилятор..

развернуть

void setup(){
  m.init(); // module initialize
  m.setIntensity(0); // dot matix intensity 0-15
  Serial.begin(9600); // serial communication initialize

  Wire.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);
}

0

83

Можно останавливать при помощи 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]);

0

84

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 module

int 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 initialize

  Wire.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 минуты, а за это время показания часов остаются старыми. Понимаю, что нужно совсем другой код писать, но в этом я пока ноль(

0

85

Функция 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);

Обновление времени сделать в отдельной процедуре, чтобы не загромождать основной код.

Если же Вы хотите чтобы время обновлялось (секунды) прямо во время движения бегущей строки, то да, это будет другой код.

0

86

Technik
так оно и минуты не обновит, если задержку поставить более 60000 мс. (60 сек) за это время минута может уже и поменяться. Это будет заметно при эксплуатации. Вообще, хочу использовать данный проект именно как часы с периодическим выводом температуры, влажности, а также температуры и давления за окном (хочу прикрутить датчик BMP180).
А как бегущая строка проект работает идеально.

0

87

Зачем ставить задержки ? это же затормаживает работу основного цикла. Используйте millis() или готовую библиотеку TimerOne http://robocraft.ru/blog/arduino/614.html

0

88

unsigned long oldMillis = 0 // переменная времени

loop:

    if (millis() - oldMillis > 60000) // если прошло 60 сек, то

        {                                       // здесь наше действие

           oldMillis = millis(); // Засекаем снова

         }

Отредактировано Lastik (2016-09-23 20:08:37)

0

89

Пример подключения светодиодных матриц к MAX7219 http://radiolaba.ru/microcotrollers/pod … x7219.html

0

90

valex написал(а):

допиливаем DS1307 как разжевано на видео

Допилил, теперь стоит обычная компьютерная батарейка 3в

http://s0.uploads.ru/t/KmB4i.jpg

0


Вы здесь » Паяльник » Микроконтроллеры » Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность


создать форум