Ви не увійшли.
Основная проблема в команде scrollMessage(scrollText2); Она как delay() . Пока она работает остальное стоит. А когда она закончится начнет работать все остальное по очереди. До следущих тормозов похожих на delay() . Это не Ардуино виновата. Это даунский подход к программироваю на Си на этой платформе. Вижу несколько путей: есть визуал программирование на Ардуине. Хотя так кривой код, но тормозов delay() поменьше. Или же учить глубже Си->Cи++ -> ООП . Я выбрал 2 путь. Ничего по этому огрызку программы не скажу, так как это огрызок. А у меня хрустальный шар затерялся.
Спасибо, что пытаетесь помочь.
#include <IRremote.h>
#include <IRremoteInt.h>
#include <LedControl.h>
#include <avr/pgmspace.h>
#include <LedControl.h>
IRrecv irrecv(2);
decode_results results;
const int numDevices = 4; // number of MAX7219s used
const long scrollDelay = 75; // adjust scrolling speed
unsigned long bufferLong [14] = {0};
LedControl lc=LedControl(12,11,10,numDevices);
const unsigned char scrollText[] PROGMEM ={" 12345 "};
const unsigned char scrollText2[] PROGMEM ={" 0123456 "};
void setup(){
for (int x=0; x<numDevices; x++){
lc.shutdown(x,false); //The MAX72XX is in power-saving mode on startup
lc.setIntensity(x,8); // Set the brightness to default value
lc.clearDisplay(x); // and clear the display
Serial.begin(9600);
irrecv.enableIRIn();
}
}
void loop(){
if ( irrecv.decode( &results )) {
Serial.println(results.value, HEX);
if (results.value==0xFF30CF){
scrollMessage(scrollText);results.value=0;
}
if (results.value==0xFF18E7){
scrollMessage(scrollText2);results.value=0;
}
irrecv.resume();
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const unsigned char font5x7 [] PROGMEM = { //Numeric Font Matrix (Arranged as 7x font data + 1x kerning data)
B00000000, //Space (Char 0x20)
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
6,
B10000000, //!
B10000000,
B10000000,
B10000000,
B00000000,
B00000000,
B10000000,
2,
//Тут перечень букв идет//
void scrollFont() {
for (int counter=0x20;counter<0x80;counter++){
loadBufferLong(counter);
delay(500);
}
}
// Scroll Message
void scrollMessage(const unsigned char * messageString) {
int counter = 0;
int myChar=0;
do {
// read back a char
myChar = pgm_read_byte_near(messageString + counter);
if (myChar != 0){
loadBufferLong(myChar);
}
counter++;
}
while (myChar != 0);
}
// Load character into scroll buffer
void loadBufferLong(int ascii){
if (ascii >= 0x20 && ascii <=0xff){
for (int a=0;a<7;a++){ // Loop 7 times for a 5x7 font
unsigned long c = pgm_read_byte_near(font5x7 + ((ascii - 0x20) * 8) + a); // Index into character table to get row data
unsigned long x = bufferLong [a*2]; // Load current scroll buffer
x = x | c; // OR the new character onto end of current
bufferLong [a*2] = x; // Store in buffer
}
byte count = pgm_read_byte_near(font5x7 +((ascii - 0x20) * 8) + 7); // Index into character table for kerning data
for (byte x=0; x<count;x++){
rotateBufferLong();
printBufferLong();
delay(scrollDelay);
}
}
}
// Rotate the buffer
void rotateBufferLong(){
for (int a=0;a<7;a++){ // Loop 7 times for a 5x7 font
unsigned long x = bufferLong [a*2]; // Get low buffer entry
byte b = bitRead(x,31); // Copy high order bit that gets lost in rotation
x = x<<1; // Rotate left one bit
bufferLong [a*2] = x; // Store new low buffer
x = bufferLong [a*2+1]; // Get high buffer entry
x = x<<1; // Rotate left one bit
bitWrite(x,0,b); // Store saved bit
bufferLong [a*2+1] = x; // Store new high buffer
}
}
// Display Buffer on LED matrix
void printBufferLong(){
for (int a=0;a<7;a++){ // Loop 7 times for a 5x7 font
unsigned long x = bufferLong [a*2+1]; // Get high buffer entry
byte y = x; // Mask off first character
lc.setRow(3,a,y); // Send row to relevent MAX7219 chip
x = bufferLong [a*2]; // Get low buffer entry
y = (x>>24); // Mask off second character
lc.setRow(2,a,y); // Send row to relevent MAX7219 chip
y = (x>>16); // Mask off third character
lc.setRow(1,a,y); // Send row to relevent MAX7219 chip
y = (x>>8); // Mask off forth character
lc.setRow(0,a,y); // Send row to relevent MAX7219 chip
}
}
Код полностью не мой немного допиляный.
Так вот проблема в том что пока бежит выбранная строка, пульт не реагирует.
Как толь один круг пройден- останавливается надпись, и ждет команды.
Выбираю другую надпись пультом, тоже самое до первого повтора, строка останавливается.
Спасибо за ранее.
Основная проблема в команде scrollMessage(scrollText2); Она как delay() . Пока она работает остальное стоит. А когда она закончится начнет работать все остальное по очереди. До следущих тормозов похожих на delay() . Это не Ардуино виновата. Это даунский подход к программироваю на Си на этой платформе. Вижу несколько путей: есть визуал программирование на Ардуине. Хотя так кривой код, но тормозов delay() поменьше. Или же учить глубже Си->Cи++ -> ООП . Я выбрал 2 путь. Ничего по этому огрызку программы не скажу, так как это огрызок. А у меня хрустальный шар затерялся.
Здравствуйте уважаемые. Помогите пожалуйста решить проблемку. Есть пульт, который переключаетна бегущей строке отдельные слова на LCD 8x8. При нажатиии на нужную кнопку,предложение проходит один круг и замирает в ожидании кнопки. При пробеги предложении если выбираешь другое предложение предыдущее не прерывается. Как это сделать. Только начинаю творить, помогите в этом куске скетча.
void loop(){
if ( irrecv.decode( &results )) {
Serial.println(results.value, HEX);if (results.value==0xFF30CF){
scrollMessage(scrollText);results.value=0;
}if (results.value==0xFF18E7){
scrollMessage(scrollText2);results.value=0;
}
irrecv.resume();
}
}
Заранее спасибо.
попробуйте так :
void loop(){
if ( irrecv.decode( &results )) {
Serial.println(results.value, HEX);
if (results.value==0xFF30CF){
/*
добавляем необходимое условие
*/
scrollMessage(scrollText);results.value=0;
}
if (results.value==0xFF18E7){
/*
добавляем необходимое условие
*/
scrollMessage(scrollText2);results.value=0;
}
irrecv.resume();
}
}
заранее пожалуйста.
такие кудато едет )
На таком надо ещё и научится.
Если вы покупаете машинку в детских товарах, а потом норовите сесть за руль и ездить по нормальным дорогам, то всем покажет, что вы идиот. Так вот и программирование на Ардуине. Оно расчитано на детей. Для проектов посложнее надо получше разбираться в Си и программированиию
По видимому Вы такой же ребенок.
такие кудато едет )
Если вы покупаете машинку в детских товарах, а потом норовите сесть за руль и ездить по нормальным дорогам, то всем покажет, что вы идиот. Так вот и программирование на Ардуине. Оно расчитано на детей. Для проектов посложнее надо получше разбираться в Си и программированиию
" Есть пульт, который переключаетна бегущей строке отдельные слова на LCD 8x8. При нажатиии на нужную кнопку,предложение проходит один круг и замирает в ожидании кнопки. При пробеги предложении если выбираешь другое предложение предыдущее не прерывается. Как это сделать. "
Помогите понять, что у автора происходит и что ему нужно исправить ???
Здравствуйте уважаемые. Помогите пожалуйста решить проблемку. Есть пульт, который переключаетна бегущей строке отдельные слова на LCD 8x8. При нажатиии на нужную кнопку,предложение проходит один круг и замирает в ожидании кнопки. При пробеги предложении если выбираешь другое предложение предыдущее не прерывается. Как это сделать. Только начинаю творить, помогите в этом куске скетча.
void loop(){
if ( irrecv.decode( &results )) {
Serial.println(results.value, HEX);
if (results.value==0xFF30CF){
scrollMessage(scrollText);results.value=0;
}
if (results.value==0xFF18E7){
scrollMessage(scrollText2);results.value=0;
}
irrecv.resume();
}
}
Заранее спасибо.