attiny13a и max7219

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017

Здравствуйте ! У меня возникло проблем с работа attiny13a и max7219. Я прошиваю мк через arduino mega. Скетч работает отлично в ардуино мега, индикатор показаться нужних цифр. Но в аттинй13 показаться инную значения. В программе есть 3 функци R1, R2, R3. R1 отвечает 1-й разрядов, а R2 и R3 отвечает 2-3-й разряадов. Если я отправляю какой-то значение в одного из них, то индикатор показатья в порядке. Но если я буду вызывать всех функци одновременно, тогда работает не корректно. Пожалуйста помагите мне?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Лишний пробел в строке 13.

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017

Вот моя скетч

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017

#include

const int dataIn =0;
const int clock = 1;
const int load = 2;

int r1[2] = {3, 4};
int r2[2] = {8, 6};
int r3[2] = {2, 7};

//MMMMMMMMMMMMMMMMMMMMM
byte dig_R1[10][2]= {{99, 34},
{34, 0 },
{33, 35},
{35, 33},
{98, 1 },
{67, 33},
{67, 35},
{35, 0 },
{99, 35},
{99, 33}};
//MMMMMMMMMMMMMMMMMMMMMM
byte dig_R2[10][2]= {{82, 17},
{66, 0},
{96, 17},
{98, 16},
{114, 0},
{50, 16},
{50, 17},
{66, 0},
{114, 17},
{114, 16}};
//MMMMMMMMMMMMMMMMMMMMMM
byte dig_R3[2][2] = {{34, 0},
{19, 66}};
//MMMMMMMMMMMMMMMMMMMMMM

const byte maxInUse = 10;
const byte max7219_reg_noop = 0x00;
const byte max7219_reg_decodeMode = 0x09;
const byte max7219_reg_intensity = 0x0c;
const byte max7219_reg_scanLimit = 0x00;
const byte max7219_reg_shutdown = 0x0c;
const byte max7219_reg_displayTest = 0x0f;
const int lim = 99;
const int lim2 = 9;

void setup ()
{
// Serial.begin(9600);
pinMode(dataIn, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(load, OUTPUT);

//////////////////////////////////
maxAll(0x0b, 0x07);
maxAll(0x09, 0x00);
maxAll(0x0c, 0x01);
maxAll(0x0f, 0x00);
for (byte e=1; e<=8; e++)
{
maxAll(e,0);
}
maxAll(0x0a, 0x0f & 0x0f);
// maxAll(3, 99);

raqam(7);

//raqam2(&e);

}
void loop (){

}

//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
void putByte(byte data) {
byte z = 8;
byte mask;
while(z > 0) {
mask = 0x01 << (z - 1);
digitalWrite( clock, LOW);
if (data & mask){
digitalWrite(dataIn, HIGH);
}else{
digitalWrite(dataIn, LOW);
}
digitalWrite(clock, HIGH);
--z;
}
}

void maxAll (byte reg, byte col) {
int c = 0;
digitalWrite(load, LOW); // begin
for ( c =1; c<= 2; c++) {
putByte(reg); // specify register
putByte(col);//((data & 0x01) * 256) + data >> 1);
}
digitalWrite(load, LOW);
digitalWrite(load,HIGH);
}
//WWWWWWWWWWWWWWWWWWWW
void R1(int birlik)
{
for(int mc = 0; mc < 2; mc++)
{
maxAll(r1[mc], dig_R1[birlik][mc]);
}
}
//WWWWWWWWWWWWWWWWWWWW
void R2(int nlik)
{
for(int ms = 0; ms < 2; ms++)
{
maxAll(r2[ms], dig_R2[nlik][ms]);
}
if(nlik != 1 && nlik != 4)
{
maxAll(5, 64);
}
}
//WWWWWWWWWWWWWWWWWWWW
void R3(int yuzlik)
{
for(int ma = 0; ma < 2; ma++)
{
maxAll(r3[ma], dig_R3[(yuzlik - 1)][ma]);
}
}
//WWWWWWWWWWWWWWWWWWWW

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

я же говорю

xDriver пишет:

Лишний пробел в строке 13.

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017

Нет лишний бробел в строке 13

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

нет строки №13

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017

Есть строки №13. но там нет лишний пробел. Я уже стирал их

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

моя не видит строку с номером 13.

Muhammed Isakov
Muhammed Isakov аватар
Offline
Зарегистрирован: 03.03.2017
#include <math.h>
const int dataIn=0;
const int clock=1;
const int load=2;
int r1[2]={3,4};
int r2[2]={8,6};
int r3[2]={2,7};
//------------------------------------------------------------
byte dig_R1[10][2]={{99,34},{34,0},{33,35},{35,33},{98,1},{67,33},{67,35},{35,0},{99,35},{99,33}};
byte dig_R2[10][2]={{82,17},{66,0},{96,17},{98,16},{114,0},{50,16},{50,17},{66,0},{114,17},{114,16}};
byte dig_R3[2][2]={{34,0},{19,66}};
//------------------------------------------------------------
const byte maxInUse=10;// <- Вот страка №13
const byte max7219_reg_noop=0x00;
const byte max7219_reg_decodeMode=0x09;
const byte max7219_reg_intensity=0x0c;
const byte max7219_reg_scanLimit=0x00;
const byte max7219_reg_shutdown=0x0c;
const byte max7219_reg_displayTest=0x0f;
const int lim=99;
const int lim2=9;
//------------------------------------------------------------
void setup ()
{
 pinMode(dataIn, OUTPUT);
 pinMode(clock,  OUTPUT);
 pinMode(load,   OUTPUT);
///////////////////////////initiation of the max 7219
 maxAll(0x0b, 0x07);
 maxAll(0x09, 0x00);
 maxAll(0x0c, 0x01);
 maxAll(0x0f, 0x00);
 for (byte e=1; e<=8; e++)
 {
   maxAll(e,0);
 }
 maxAll(0x0a, 0x0f & 0x0f);
}
//--------------------------------------
void loop (){
}
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
void putByte(byte data) {
 byte z = 8;
 byte mask;
 while(z > 0) {
   mask = 0x01 << (z - 1);
   digitalWrite( clock, LOW);
   if (data & mask){
     digitalWrite(dataIn, HIGH);
   }else{
     digitalWrite(dataIn, LOW);
   }
   digitalWrite(clock, HIGH);
   --z;
 }
}
void maxAll (byte reg, byte col) {
 int c = 0;
 digitalWrite(load, LOW);
 for ( c =1; c<= 2; c++) {
 putByte(reg);
 putByte(col); //((data & 0x01) * 256) + data >> 1);
   }
 digitalWrite(load, LOW);
 digitalWrite(load,HIGH);
}
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
void digits(int digit)
{
  int q;
  if(digit > lim)
  {
    q = (digit - (digit % 100)) / 100;
    R3(q);
    q = (((digit % 100) - (digit % 100) % 10)) / 10;
    R2(q);
    q = (digit % 100) % 10;
    R1(q);
  }
  else
    if( digit > lim2)
    {
      q = (digit - (digit % 10)) / 10;
      R2(q);
      q = digit % 10;
      R1(q);
    }
    else
      {
        R1(digit);
      }
}
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
void R1(int birlik)
{
  for(int mc = 0; mc < 2; mc++)
  {
    maxAll(r1[mc], dig_R1[birlik][mc]);
  }
}
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
void R2(int nlik)
{
  for(int ms = 0; ms < 2; ms++)
  {
    maxAll(r2[ms], dig_R2[nlik][ms]);
  }
  if(nlik != 1 && nlik != 4)
  {
    maxAll(5, 64);
  }
}
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
void R3(int yuzlik)
{
  for(int ma = 0; ma < 2; ma++)
  {
    maxAll(r3[ma], dig_R3[(yuzlik - 1)][ma]);
  }
}
//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

 

SLKH
Offline
Зарегистрирован: 17.08.2015

см. библиотеку LedControl.