Вт окт 27, 2015 08:38:22
#define PIN_E 7 // enable
#define PIN_L 8 // latch
#define PIN_C 9 // clock
#define PIN_D 10// data
#define SYMBOLS_ARRAY_LENGTH 12 //Длина массива символов
unsigned char Symbols[SYMBOLS_ARRAY_LENGTH]={ // Массив символов индикатора
252, // 0
96, // 1
218, // 2
242, // 3
102, // 4
182, // 5
190, // 6
224, // 7
254, // 8
246, // 9
1, // .
2 // -
};
void setup()
{
pinMode(PIN_E, OUTPUT);
pinMode(PIN_L, OUTPUT);
pinMode(PIN_C, OUTPUT);
pinMode(PIN_D, OUTPUT);
digitalWrite(PIN_L, LOW); // сигнал защелки вниз
digitalWrite(PIN_E, LOW); // включаем сегменты
digitalWrite(PIN_C, LOW); // тактовый сигнал вниз
}
void loop()
{
// показываем на дисплее счетчик
for(int i = 0; i < 10; i++)
{
unsigned long value = GetValue(i, i, i, i);
WriteReg(value);
}
}
// пишем в регистр сразу 32 разряда
// пишем в регистр сразу 32 разряда
void WriteReg(unsigned long value)
{
for(int i = 0; i < 32; i++) // перебираем разряды
{
int data = (value >> i) & 0x1; // берем очередной разряд
digitalWrite(PIN_C, LOW); // тактовый сигнал вверх
digitalWrite(PIN_D, data); // устанавливаем сигнал данных
digitalWrite(PIN_C, HIGH); // тактовый сигнал вниз
}
digitalWrite(PIN_L, HIGH); // защелку вверх
digitalWrite(PIN_L, LOW); // защелку вниз
delay(500);
}
// передаем числа, получаем на выходе код для их отображения
unsigned long GetValue(byte s1, byte s2, byte s3, byte s4)
{
return
(unsigned long)(Symbols[s1] << 0) |
(unsigned long)(Symbols[s2] << 8) |
(unsigned long)(Symbols[s3] << 16) |
(unsigned long)(Symbols[s4] << 24);
}
Вт окт 27, 2015 14:05:56
Ср окт 28, 2015 09:33:14
#define PIN_E 7 // enable
#define PIN_L 8 // latch
#define PIN_C 9 // clock
#define PIN_D 10// data
#define SYMBOLS_ARRAY_LENGTH 12 //Длина массива символов
unsigned char Symbols[SYMBOLS_ARRAY_LENGTH]={ // Массив символов индикатора
252, // 0
96, // 1
218, // 2
242, // 3
102, // 4
182, // 5
190, // 6
224, // 7
254, // 8
246, // 9
1, // .
2 // -
};
void setup()
{
pinMode(PIN_E, OUTPUT);
pinMode(PIN_L, OUTPUT);
pinMode(PIN_C, OUTPUT);
pinMode(PIN_D, OUTPUT);
digitalWrite(PIN_L, LOW); // сигнал защелки вниз
digitalWrite(PIN_E, LOW); // включаем сегменты
digitalWrite(PIN_C, LOW); // тактовый сигнал вниз
}
void loop()
{
unsigned long value = GetValue(4, 3, 2, 1);
WriteReg(value);
}
// пишем в регистр сразу 32 разряда
// пишем в регистр сразу 32 разряда
void WriteReg(unsigned long value)
{
for(int i = 0; i < 32; i++) // перебираем разряды
{
int data = (value >> i) & 0x1; // берем очередной разряд
digitalWrite(PIN_C, LOW); // тактовый сигнал вверх
digitalWrite(PIN_D, data); // устанавливаем сигнал данных
digitalWrite(PIN_C, HIGH); // тактовый сигнал вниз
}
digitalWrite(PIN_L, HIGH); // защелку вверх
digitalWrite(PIN_L, LOW); // защелку вниз
}
// передаем числа, получаем на выходе код для их отображения
unsigned long GetValue(byte s1, byte s2, byte s3, byte s4)
{
return
(unsigned long)(Symbols[s1] << 0) |
(unsigned long)(Symbols[s2] << 8) |
(unsigned long)(Symbols[s3] << 16) |
(unsigned long)(Symbols[s4] << 24);
}
Ср окт 28, 2015 10:03:24
Ср окт 28, 2015 13:36:50
void loop()
{
unsigned long value = 1624961638;
WriteReg(value);
}
Ср окт 28, 2015 14:34:58
Ср окт 28, 2015 15:19:43
Вт ноя 03, 2015 00:49:54
Чт ноя 05, 2015 13:11:06
{
int i;
i = 1624961638;
unsigned long value = i;
WriteReg(value);
}
{
unsigned long value = 1624961638;
WriteReg(value);
}
Чт ноя 05, 2015 14:42:54
Вт ноя 10, 2015 09:42:54
#define PIN_E 7 // enable
#define PIN_L 8 // latch
#define PIN_C 9 // clock
#define PIN_D 10// data
#define SYMBOLS_ARRAY_LENGTH 18 //Длина массива символов
unsigned char Symbols[SYMBOLS_ARRAY_LENGTH]={ // Массив символов индикатора
252, // 0
96, // 1
218, // 2
242, // 3
102, // 4
182, // 5
190, // 6
224, // 7
254, // 8
246, // 9
238, // A
62, // B
156, // C
122, // D
158, // E
142, // F
1, // .
2 // -
};
void setup()
{
pinMode(PIN_E, OUTPUT);
pinMode(PIN_L, OUTPUT);
pinMode(PIN_C, OUTPUT);
pinMode(PIN_D, OUTPUT);
digitalWrite(PIN_L, LOW); // сигнал защелки вниз
digitalWrite(PIN_E, LOW); // включаем сегменты
digitalWrite(PIN_C, LOW); // тактовый сигнал вниз
Serial.begin(9600);
}
void loop()
{
// показываем на дисплее счетчик
for(int i = 0; i < SYMBOLS_ARRAY_LENGTH; i++)
{
WriteReg(i, i, i, i);
WriteLatch();
Serial.println(i);
}
}
// пишем в регистр 8 разрядов
void WriteReg(byte s1, byte s2, byte s3, byte s4)
{
byte s[4] = {Symbols[s1], Symbols[s2], Symbols[s3], Symbols[s4]};
for (int b = 0; b < 4; b++)
{
byte value = s[b];
for(int i = 0; i < 8; i++) // перебираем разряды
{
int data = (value >> i) & 0x1; // берем очередной разряд
digitalWrite(PIN_C, LOW); // тактовый сигнал вверх
digitalWrite(PIN_D, data); // устанавливаем сигнал данных
digitalWrite(PIN_C, HIGH); // тактовый сигнал вниз
}
}
}
// пишем защелку
void WriteLatch()
{
digitalWrite(PIN_L, HIGH); // защелку вверх
digitalWrite(PIN_L, LOW); // защелку вниз
delay(1000);
}
Пт дек 15, 2017 11:47:05
dtostrf(speed, 3, 1, myStr8); // выводим в строку myStr 3 до запятой, один разряд после запятой
MyStr = myStr8
char c = myStr8[0];
#define PIN_E 7 // enable
#define PIN_L 8 // latch
#define PIN_C 9 // clock
#define PIN_D 10// data
unsigned long cur_ms = 0; //переменная для отслеживания натикавших миллисекунд с момента пуска МК
unsigned long prev_ms = 0; //переменная для вычисления отрезков времени
int ms = 0; //сам отрезок времени
int m = 0; //пройденное расстояние
int speed = 0; //переменная для хранения скорости
String MyStr;
char myStr8[10];
char c = myStr8[0];
char d = myStr8[1];
char e = myStr8[2];
char f = myStr8[3];
const byte Sect_Size = 4; // Четырёхразрядная секция индикатора
const byte Byte_Size = 8; // Число бит в байте
#define SYMBOLS_ARRAY_LENGTH 20 //Длина массива символов
unsigned char Symbols[SYMBOLS_ARRAY_LENGTH] = { // Массив символов индикатора
252, // 0
96, // 1
218, // 2
242, // 3
102, // 4
182, // 5
190, // 6
224, // 7
254, // 8
246, // 9
238, // A
62, // B
156, // C
122, // D
158, // E
142, // F
188, // G
110, // H
1, // .
2 // -
};
void setup()
{
pinMode(20, INPUT); //включаем 20й порт на Ардуино Мега2560 на чтение
digitalWrite(20, HIGH); //включаем подтягивающий резистор
attachInterrupt(3, odom, RISING); //включаем внешнее прерывание
pinMode(PIN_E, OUTPUT);
pinMode(PIN_L, OUTPUT);
pinMode(PIN_C, OUTPUT);
pinMode(PIN_D, OUTPUT);
digitalWrite(PIN_L, LOW); // сигнал защёлки вниз
digitalWrite(PIN_E, LOW); // включаем сегменты
digitalWrite(PIN_C, LOW); // тактовый сигнал вниз
Serial.begin(9600);
}
void odom() {
m++; //добавляем 1 при каждом срабатывании
}
void loop()
{
dtostrf(speed, 3, 1, myStr8); // выводим в строку myStr 3 до запятой, один разряд после запятой
MyStr = myStr8;
cur_ms = millis(); //сколько прошло мс с момента включения
ms = cur_ms - prev_ms; //сколько прошло мс с последнего расчета
if (ms > 500)
prev_ms = cur_ms; //ставим метку когда было срабатывание
speed = m * 3600 / ms; //вычисляем скорость км в час по кол-ву пройденных метров за отрезок времени ms
m = 0; //обнуляем пройденное расстояние
ms=0; //обнуляем отрезок времени
unsigned char Segments [Sect_Size];
byte Digit [Sect_Size];
for ( int i = 0; i < Sect_Size; i++ )
{
}
// показываем на дисплее счетчик
Digit [3] = c;
Digit [2] = d;
Digit [1] = e;
Digit [0] = f;
/* for ( int i = 0; i < Sect_Size; i++ )
{
Segments [i] = Symbols [ Digit [i] ];
} ;
Segments [3] = Segments [3] + 1;
*/
{
WriteReg( Digit [0], Digit [1], Digit [2], Digit [3] );
WriteLatch();
Serial.println(Digit [1]);
}
}
// пишем в регистр (Byte_Size = 8) разрядов
void WriteReg(byte s1, byte s2, byte s3, byte s4)
{
/*
byte shift = 16;
byte s[Sect_Size] = { Symbols [shift+0], Symbols [shift+1],
Symbols [shift+2], Symbols [shift+3] };
*/
byte s[Sect_Size] = {Symbols [s1], Symbols [s2], Symbols [s3], Symbols [s4]};
for ( int b = 0; b < Sect_Size; b++ )
{
byte value = s[b]; // | ( b == 0 ? 0x1 : 0x0 );
if (b == 1) value |= 0x1; // Позиция (b == 2) разделительной точки
for( int i = 0; i < Byte_Size; i++ ) // перебираем разряды
{
int data = (value >> i) & 0x1; // берём очередной разряд
digitalWrite(PIN_C, LOW); // тактовый сигнал вверх
digitalWrite(PIN_D, data); // устанавливаем сигнал данных
digitalWrite(PIN_C, HIGH); // тактовый сигнал вниз
}
}
}
// пишем защёлку
void WriteLatch()
{
digitalWrite(PIN_L, HIGH); // защёлку вверх
digitalWrite(PIN_L, LOW); // защёлку вниз
delay(1000);
}
Пт дек 15, 2017 15:02:37
MyStr = myStr8
MyStr = String(myStr8)