Паяльник

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

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


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


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

Сообщений 31 страница 60 из 97

31

if (x == 109) {
        matrix;   //   !!! НА ЭТУ КНОПУ И ХОЧУ ПОВЕСИТЬ ВКЛЮЧЕНИЕ "БЕГУЩЕЙ СТРОКИ"
        delay(40);
      }

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

Отредактировано valex (2016-02-09 14:42:45)

+1

32

Ну давайте посмотрим...

1. Убедитесь что ваше условие выполняется

можно добавить строку Led13

digitalWrite(13, HIGH);

не забыв конечно описать в секции setup

pinMode(13, OUTPUT);

2. Исправьте на matrix();

3. Можно принудительно дать команду на сериальный монитор (СЕРВИС - МОНИТОР ПОРТА)

Это будет символ "m"

код этого символа и будет 109

4. У Вас описана всего лишь одна матрица

int maxInUse = 1;    //change this variable to set how many MAX7219's you'll use (5)

У Вас действительно только одна матрица ?

Неужели вы хотите выводить такую длинную строку через одну матрицу ?

CEGODHZ %02d.%02d.%02d B %02d.%02d TEMPERATURA VO3DUXA %d~C VLAJHOCTb %i%%

5. Закоментируйте строку

  sprintf(string1, "CEGODHZ %02d.%02d.%02d B %02d.%02d TEMPERATURA VO3DUXA %d~C VLAJHOCTb %i%%     ", TDay, TMonth, TYear, THour, TMinutes, Temp, Hum);
//  Serial.println(string1);  <<< - Вот эту !!!
  printStringWithShift(string1, 100);

Иначе наша строка отправится на сериальный порт, а он у нас используется для команд

0

33

1. Убедитесь что ваше условие выполняется
можно добавить строку Led13
digitalWrite(13, HIGH);
не забыв конечно описать в секции setup
pinMode(13, OUTPUT);

   -РАБОТАЕТ. светодиод загорается при нажатии данной кнопки

пробовал создать оператор void bliink()
{
digitalWrite(13, HIGH);
}
и прописать в строке кнопки   if (x == 109) {
        bliink;   //   !!! НА ЭТУ КНОПУ И ХОЧУ ПОВЕСИТЬ ВКЛЮЧЕНИЕ "БЕГУЩЕЙ СТРОКИ"
        delay(40);
      }
в этом случае НЕ РАБОТАЕТ...   БЫТЬ МОЖЕТ Я ОПЕРАТОР СТАВЛЮ НЕ В ТОМ МЕСТЕ?  void matrix должен быть внутри цикла loop??? ... пытался сунуть в loop однако проблема синтаксиса выскакивает  ..то ли {} нехватет то ли лишняя где то.. не пойму..запарился

да.. все верно..пока матрица ..как и прописанно ..Одна

Отредактировано valex (2016-02-10 23:45:12)

0

34

кручу самодельную ардуину.. шью usbaspом.. так что с монитором порта -никак.  да и не вижу особо смысла

0

35

Торопитесь... По поводу пункта 2. вы не отписались и у вас продолжается

ошибка, bliink без скобок, должно быть так:

bliink();

тоже самое касается matrix

matrix();

Поэтому и не работает

Проверил Ваш скетч из предыдущего поста [29] на Arduiono Uno, исправил, теперь работает, все как надо:

условие выглядит так:

if (x == 109) {
        digitalWrite(13, HIGH);  // Зажигаем тестовый светодиод, чтобы убедиться что условие выполнилось
        matrix();   //   Смотрим на бегущую строку из 1 матрицы
        delay(40);
      }

Вот целиком скетч:

Код:
#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, B01100000, B01100000, B00000000, B00000000, B00000000, // .
  4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
  4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
  3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
  4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
  4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
  4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
  4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
  4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
  4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
  4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
  4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
  2, 8, B01010000, 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, B01000110, B01001001, B01001001, B00110010, 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 = 8;    // DIN pin of MAX7219 module
int load = 9;    // CS pin of MAX7219 module
int clock = 10;  // CLK pin of MAX7219 module

int maxInUse = 1;    //change this variable to set how many MAX7219's you'll use (5)
MaxMatrix m(data, load, clock, maxInUse); // define module
byte buffer[10];
#include <IRremote.h>
IRsend irsend;
int y = 1;
void setup()
{
  pinMode(13, OUTPUT);
  m.init(); // module initialize
  m.setIntensity(10); // dot matix intensity 0-15
  Serial.begin(9600); // serial communication initialize
  Wire.begin();  // RTC_DS1307
  RTC.begin();
// RTC.adjust(DateTime(__DATE__, __TIME__));
  dht.begin(); // DHT-11
}
  void matrix(){
  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 B %02d.%02d TEMPERATURA VO3DUXA %d~C VLAJHOCTb %i%%     ", TDay, TMonth, TYear, THour, TMinutes, Temp, Hum);
//  Serial.println(string1);
  printStringWithShift(string1, 100);
}
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++;
  }
} 
void loop() {
  if (Serial.available() > 0) {
    int x = Serial.read();
    if (x == 49) {
      y = 1;
    }
    if (x == 50) {
      y = 2;
    }
    if (y == 1) { // коды кнопок для пульта от телевизора
      if (x == 97) {
        irsend.sendNEC(0x2FD48B7, 32);
        delay(40);
      }
      if (x == 98) {
        irsend.sendNEC(0x2FDDA25, 32);
        delay(40);
      }
      if (x == 99) {
        irsend.sendNEC(0x2FD708F, 32);
        delay(40);
      }
      if (x == 100) {
        irsend.sendNEC(0x2FDF00F, 32);
        delay(40);
      }
      if (x == 101) {
        irsend.sendNEC(0x2FDD02F, 32);
        delay(40);
      }
      if (x == 102) {
        irsend.sendNEC(0x2FD30CF, 32);
        delay(40);
      }
      if (x == 103) {
        irsend.sendNEC(0x2FDD827, 32);
        delay(40);
      }
      if (x == 104) {
        irsend.sendNEC(0x2FD38C7, 32);
        delay(40);
      }
      if (x == 105) {
        irsend.sendNEC(0x2FD7887, 32);
        delay(40);
      }
      if (x == 106) {
        irsend.sendNEC(0x2FDF807, 32);
        delay(40);
      }
      if (x == 107) {
        irsend.sendNEC(0x2FD28D7, 32);
        delay(40);
      }
      if (x == 108) {
        irsend.sendNEC(0x2FD50AF, 32);
        delay(40);
      }
      if (x == 109) {
        digitalWrite(13, HIGH);
        matrix();   //   !!! НА ЭТУ КНОПУ И ХОЧУ ПОВЕСИТЬ ВКЛЮЧЕНИЕ "БЕГУЩЕЙ СТРОКИ"
        delay(40);
      }
    }
    if (y == 2) {  //коды кнопок пульта от медиаплеера
      if (x == 97) {
        irsend.sendNEC(0xFDC23D, 32); 
        delay(40);
      }
      if (x == 98) {
        irsend.sendNEC(0xFDE01F, 32);
        delay(40);
      }
      if (x == 99) {
        irsend.sendNEC(0xFD18E7, 32);
        delay(40);
      }
      if (x == 100) {
        irsend.sendNEC(0xFDE817, 32);
        delay(40);
      }
      if (x == 101) {
        irsend.sendNEC(0xFDA857, 32);
        delay(40);
      }
      if (x == 102) {
        irsend.sendNEC(0xFD6897, 32);
        delay(40);
      }
      if (x == 103) {
        irsend.sendNEC(0xFDA857, 32);
        delay(40);
      }
      if (x == 104) {
        irsend.sendNEC(0xFD6897, 32);
        delay(40);
      }
      if (x == 105) {
        irsend.sendNEC(0xFDE817, 32);
        delay(40);
      }
      if (x == 106) {
        irsend.sendNEC(0xFD18E7, 32);
        delay(40);
      }
      if (x == 107) {
        irsend.sendNEC(0xFD9867, 32);
        delay(40);
      }
      if (x == 108) {
        irsend.sendNEC(0xFD28D7, 32);
        delay(40);
      }
      if (x == 109) {
        irsend.sendNEC(0xFD2847, 32);
        delay(40);
      
      }    
     
    } 
  }
}

По поводу монитора не нужно им пренебрегать, он может быть очень полезен для наладки программ, для подключения к порту потребуется любой USB-UART-TTL конвертер (RX, TX , GND) например http://ru.aliexpress.com/item/1-pcs-USB … bb1273bd30 и любая программа которая умеет слушать виртуальный Com-порт например Termite.

+1

36

Спасибо,SyrBrandon   :cool:

0

37

Рад был помочь.
Если у вас появятся вопросы – пожалуйста, обращайтесь!

0

38

Всем доброго времени суток!

БУду благодарен, если кто-то поможет разобраться с проблемой, которая похожа на то, что обсуждается в этом топике, но несколько другая конфигурация. У меня 5 светодиодных матриц MAX7219 соединены в ряд. НА них в виде бегущей строки выводится рандомно одна из 5 фраз, это происходит по нажатию кнопки. ( То есть вся конструкция состоит из 5 соединенных матриц, кнопки, аккумулятора и Arduino  Micro на плате). Вроде бы все работает, но только вот 5-я, последняя, матрица через какое-то время отключается. После того как снова загружаешь скетч или перезапускаешь Arduino, все пять работают, но опять же до определенного момента пока одна не отключается. Причем достаточно выключить-включить аккумулятор, как 5-я матрица опять включается (но опять на время). У меня еще была мысль, что это в настройках самого микроконтроллера дело, например малый объем внутренней памяти, куда он подгружает буквы. Где-то в сети нашел описание подобной проблемы и совет изменить объем этой памяти. ИЗменил SERIAL_RX_BUFFER_SIZE 256 в HardwareSerial.h. Кажется, период полноценной работы стал дольше,  но все равно 5-я пропадает рано или поздно...Не могу понять в чем дело, в Arduino я новичок. Ниже весь скетч целиком. Заранее спасибо!

Код:
#include <MaxMatrix.h>
#include <avr/pgmspace.h>


PROGMEM const unsigned char 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, B01100000, B01100000, B00000000, B00000000, B00000000, // .
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
2, 8, B01010000, 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
4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
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, B00001001, B00001001, B00000110, B00000000, // P
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
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, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
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, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
};


int data = 12;    // DIN pin of MAX7219 module
int load = 10;    // CS pin of MAX7219 module
int clock = 11;  // CLK pin of MAX7219 module

int maxInUse = 5;

MaxMatrix m(data, load, clock, maxInUse); // define Library

byte buffer[10];

char string1[] = " Straight ";  // Scrolling Text
char string2[] = "Right";
char string3[] = " Left   ";
char string4[] = " Wait for 10 minutes  ";
char string5[] = " Drink 50 gr of vodka ";

int k = 0;
void setup() {
  pinMode(3, INPUT);
  digitalWrite(3,HIGH);
  m.init(); // module MAX7219
  m.setIntensity(5); // LED Intensity 0-15
}

void loop() {

  byte c;


  m.shiftLeft(false, true);
  if (digitalRead (3) == 0) {
    k = random (5);
    if (k == 0) {
      printStringWithShift(string1, 100);
    }
    if (k == 1) {
      printStringWithShift(string2, 100);
    }
    if (k == 2) {
      printStringWithShift(string3, 100);
    }
      if (k == 3) {
      printStringWithShift(string4, 100);
    }
     if (k == 4) {
      printStringWithShift(string5, 100);
    }
        //delay(2000);
      }
    }

    // Put extracted character on Display
    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);
      }
    }

    // Extract characters from Scrolling text
    void printStringWithShift(char* s, int shift_speed) {
      while (*s != 0) {
        printCharWithShift(*s, shift_speed);
        s++;
      }
    }

0

39

Попробуйте поменять, 4-ю и 5-ю матрицу местами, что тогда будет ?
Если проблема перейдет, то исщите не пропай.
Померяйте напряжение питания на последней 5-й матрице, киньте питание на 5-ю матрицу отдельно.

0

40

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

Попробуйте поменять, 4-ю и 5-ю матрицу местами, что тогда будет ?
Если проблема перейдет, то исщите не пропай.
Померяйте напряжение питания на последней 5-й матрице, киньте питание на 5-ю матрицу отдельно.

Спасибо. Видимо дело в том, что матрицы запитаны через ардуино, мерял напряжение - оно на них падает до 4 В, когда бегут буквы. ПОпробую запитать матрицы напрямую от внешнего источника питания

0

41

Доброе время суток, у меня не компелируется скетч, выдает ошибку.
____:37: error: 'prog_uchar' does not name a type

PROGMEM prog_uchar CH[] = {

         ^

C:\Users\******\Documents\Arduino\____\____.ino: In function 'void printCharWithShift(char, int)':

____:182: error: 'CH' was not declared in this scope

   memcpy_P(buffer, CH + 7*c, 7);

Как с этим бороться?
                    ^

C:\Users\******\Documents\Arduino\____\____.ino: In function 'void printString(char*)':

____:207: error: 'CH' was not declared in this scope

     memcpy_P(buffer, CH + 7*c, 7);

                      ^

exit status 1
'prog_uchar' does not name a type

0

42

Алексей,

2 вопроса:

Что Вы компилируете ?

-> Опишите скетч, либо #пост в котором он приведен
тогда будет понятно каких библиотек возможно не хватает

И чем компилируете ?

-> Среда разработки Arduino IDE, какая версия

Если Вы компилируете то что я думаю, тогда Вам понадобятся библиотеки MaxMatrix, RTClib, DHT
и разместить их вот здесь:

c:\Program Files (x86)\Arduino\libraries\

а затем перезапустить Arduino IDE

Отредактировано Technik (2016-03-20 00:00:56)

0

43

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

Алексей,

2 вопроса:

Что Вы компилируете ?

-> Опишите скетч, либо #пост в котором он приведен
тогда будет понятно каких библиотек возможно не хватает

И чем компилируете ?

-> Среда разработки Arduino IDE, какая версия

c:\Program Files (x86)\Arduino\libraries\

а затем перезапустить Arduino IDE

Отредактировано Technik (Сегодня 00:00:56)

Бегущая строка из N-Led матриц 8x8 на MAX7219 температура и влажность
Arduino IDE 1.6.7
А библиотеки все на месте
Если Вы компилируете то что я думаю, тогда Вам понадобятся библиотеки MaxMatrix, RTClib, DHT
и разместить их вот здесь:

Есть такая информация, что эта версия Arduino IDE не потдерживает эту команду PROGMEM prog_uchar CH[] =

Отредактировано Алексей Пивень (2016-03-20 08:07:05)

0

44

Алексей Пивень написал(а):

Есть такая информация, что эта версия Arduino IDE не потдерживает эту команду PROGMEM prog_uchar CH[] =

Отредактировано Алексей Пивень (Сегодня 07:07:05)

Кажется да, я менял на PROGMEM const byte CH[] =

0

45

Господа, внесу свою лепту в дискуссию.

Работаю в Arduino 1.0.6, все компилируется на ура.

0

46

Повторил конструкцию на 4 матрицах,в целом доволен, спасибо автору.

1-при переходе через 3ю матрицу гаснет 4 строка сверху, далее все восстанавливается.
причем при начальной  инициализации на этой матрице зажигаются все элементы.
Особо сильно это не напрягает, но все же...
2-почему то часы DS3231 безбожно отстают, синхронизацию с компьютером произвожу
согласно Вашим рекомендациям, скетч взят от сюда же.
С DHT11 все нормально.
Ну и для полной функцианальной законченности, очень удачной ,на мой взгляд ,конструкции,
не помешал бы внешний датчик DS18B20.

Отредактировано 3valery (2016-03-25 15:35:30)

0

47

1-решено заменой модуля
MAX7219  оказались живучими-выдержали переполюсовку

Отредактировано 3valery (2016-03-27 17:35:44)

0

48

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

2-почему то часы DS3231 безбожно отстают, синхронизацию с компьютером произвожу
согласно Вашим рекомендациям, скетч взят от сюда же.

  говорят что кварцы на этих часах поганые частенько

0

49

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

Ну и для полной функцианальной законченности, очень удачной ,на мой взгляд ,конструкции,
не помешал бы внешний датчик DS18B20.

Если DHT-11 заменить на DHT-22 (AM2302), отпадет надобность в DS18B20

Measuring range               humidity 0-100%RH;              temperature -40~80Celsius
Accuracy                          humidity +-2%RH(Max +-5%RH);   temperature +-0.5Celsius
Resolution or sensitivity     humidity 0.1%RH;                temperature 0.1Celsius

0

50

3valery видимо имел ввиду 2й градусник..внешний..помимо комнатного)

0

51

Собрал на ардуино уно и 2 матрицах 8х8 бегущую строку загрузил скетч на плату через Arduino 1.6.6  и на матрицах вышла краказябра .
нашел причину оной проблеме :

вместо  этой строчки  PROGMEM  prog_uchar  CH[]= {...         необходимо записать так   const  PROGMEM char  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, B01100000, B01100000, B00000000, B00000000, B00000000, // .
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
2, 8, B01010000, 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
4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
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, B00001001, B00001001, B00000110, B00000000, // P
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
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, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
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, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
};
и   все заработало как надо ))

+1

52

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

говорят что кварцы на этих часах поганые частенько

Здесь кварц интегрирован в микросхему и термостатирован

0

53

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

Если DHT-11 заменить на DHT-22 (AM2302), отпадет надобность в DS18B20
Measuring range               humidity 0-100%RH;              temperature -40~80Celsius
Accuracy                          humidity +-2%RH(Max +-5%RH);   temperature +-0.5Celsius
Resolution or sensitivity     humidity 0.1%RH;                temperature 0.1Celsius

Да, спасибо , я в курсе, но по любому нужен второй датчик температуры.
DHT22 есть в наличии, но берегу для  метеостанции- логгера, мой друг разрабатывает
конструкцию на XMege, но как я понял, будет проект коммерческий, если он посчитает
нужным что либо опубликовать. приглашу сюда, сам ничего обещать не имею права.

0

54

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

3valery видимо имел ввиду 2й градусник..внешний..помимо комнатного)

Совершенно верно.

0

55

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

Собрал на ардуино уно и 2 матрицах 8х8 бегущую строку загрузил скетч на плату через Arduino 1.6.6  и на матрицах вышла краказябра .
нашел причину оной проблеме

А у меня на ардуино мини про  168  вообще не фига не выходит
хотя скетч грузится нормально, может есть фишка , о которой я не в курсе?
На на любой другой  ардуино , все нормально, не исключаю, что убиты какие то порты.

0

56

Какое напряжение питания ардуино про 168 ?

0

57

напряжение питания 5в, какой то китайский клон

0

58

в даный момент прошиваю про 328, посмотрим что она скажет

0

59

Вот такая ? http://ru.aliexpress.com/item/Pro-Mini- … .23.QjdtNR
А какой у нее логический уровень ? Случайно не 3.3в ?
Обратите внимание на стабилизатор который установлен на плате.

0

60

Вот такая
http://www.mini-tech.com.ua/index.php?r … uct_id=422
на стабилизаторе маркировка L05

0


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


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