Tahometr КранкШафт ;) шутки

art100
Offline
Зарегистрирован: 09.03.2014

Схемка

Кодец

//art100 20150131 to write tahometr lcd
#include <LiquidCrystal.h>// LCD1602
//pins------------------------
#define PINRPM1 2 //optosensor
LiquidCrystal lcd(8,9,10,11,12,13);//uno
//consts----------------------
long TmpMs1=0;
int TmpRpm1=0;
//-------------------------------------------------
void RPM1(){
  TmpRpm1=(1000000.0/(micros()-TmpMs1))*60;
  TmpMs1=micros();
}
//-------------------------------------------------
void setup() {
  pinMode(PINRPM1,INPUT_PULLUP);
  Serial.begin(9600);
  attachInterrupt(0,RPM1,FALLING);
  lcd.begin(16,2);//rows,columns
  lcd.clear();
  lcd.setCursor(0,0);lcd.print("art100 tahometr");
  
}
//=============================
void loop(){
  lcd.setCursor(0,0);lcd.print("art100 tachometer");//
  lcd.setCursor(0,1);lcd.print("crankshaft ");lcd.print(TmpRpm1);
  Serial.println(TmpRpm1,DEC);
}
//=============================

Кино  https://yadi.sk/i/uT0JOD12eNPbK

Ну давайте :)

 

a5021
Offline
Зарегистрирован: 07.07.2013

Пора бы вам уже замахнуться на публикацию алфавита.

art100
Offline
Зарегистрирован: 09.03.2014

a5021 пишет:

Пора бы вам уже замахнуться на публикацию алфавита.

Ну какое-же КранВал когда КоленоВал Коленчатый Вал ведь CrankShaft.

КneeShaft это правильно но во всех переводчиках дурь.

А КамераВал тоже можно обыграть понимаешь ли CamShaft РаспределительныйВал.

Мы ведь понимаем, что это автомобильная тематика? 

Кстати русcкие буквы писать на LCD1602. Напомните ключевое слово для http://ya.ru

в какую сторону копать

// Рисуем букву Й
 byte I_kr_lit[8] =
 {
   B00100,
   B10101,
   B10001,
   B10011,
   B10101,
   B11001,
   B10001,
   B00000,
 };

 

art100
Offline
Зарегистрирован: 09.03.2014

такс у меня оказалось русские зашиты

// art100 20150131 lcdtest2
#include <LiquidCrystal.h>
//#include <WolfCrystal.h>
LiquidCrystal lcd(8,9,10,11,12,13);
// Для работы с библиотекой необходимо создать экземпляр WolfCrystal.// В конструкторе передаём указатель на ранее созданный 
//WolfCrystal WC(&lcd); 
// Допускается не передавать указатель в конструктор, но тогда перед // первым использованием библиотеки потребуется вызвать метод // AddLCD(LiquidCrystal * LCD)
//-----------------------------------------------------------------------
void setup() {
  lcd.begin(16, 2);// Инициализируем LCD как обычно
//  lcd.print( WC.GS("Привет, мир!") ); // Для того, чтобы использовать русский, применяем метод GS: 
  // Метод принимает char* или String, обрабатывает его и отдаёт  // на выходе также String.
  // Это позволяет, не используя промежуточные переменные, легко  // передавать корректную строку в print самого LiquidCrystal.
  // lcd.print( WC.GS("Русский-rulez!") );// Напишем ещё что-нибудь.
  lcd.setCursor(0,0);lcd.print("абвгдеЁжзийклмно");//  
  lcd.setCursor(0,1);lcd.print("прстуфхцчшщыэюя6");//
}
void loop() {}

Пните куда дальше копать?

 

 

art100
Offline
Зарегистрирован: 09.03.2014

В индикаторе все русские буквы черти как раскиданы. 

что-то грустноватенько с библиотеками 

art100
Offline
Зарегистрирован: 09.03.2014

как-то все мутно

Kazanova
Offline
Зарегистрирован: 29.01.2015

Хм,   а если краншафт перестанет крутится, то на мониторе будет висеть последнее значение ?

a5021
Offline
Зарегистрирован: 07.07.2013

Он вторую ночь не спит, крутит, чтобы не останавливалось. :)

art100
Offline
Зарегистрирован: 09.03.2014

a5021 пишет:

Он вторую ночь не спит, крутит, чтобы не останавливалось. :)

:)

ну уи тестовый кодец

// art100 to write 20150201 test lcdrus спасибо неизвестному автору "id"
//#include <LiquidCrystal.h>// LCD1602
#include <LiquidCrystalRus.h>// LCD1602 rus
//pins-----------------------------------
/* 16x2 LCD  compatible with the  Hitachi HD44780 driver
//LiquidCrystal lcd(8,9,10,11,12,13);//uno
1 +5v
2 pin1-20k-pin3
3 gnd
4 RS    - 4
5 gnd
6 E     - 5
11 LCD D4 pin to digital pin 6
12 LCD D5 pin to digital pin 7
13 LCD D6 pin to digital pin 8
14 LCD D7 pin to digital pin 9
15 Anod  +5V nc
16 Katod gnd nc
 */
//LiquidCrystal lcd(8,9,10,11,12,13);//uno
LiquidCrystalRus lcd(8,9,10,11,12,13);//uno
//var------------------------------------
byte man_smail[8] =// :)
{
  B00000,
  B01010,
  B00100,
  B00100,
  B00100,
  B10001,
  B01110,
  B00000,
};
byte man_smail2[8] =// :(
{
  B00000,
  B01010,
  B00100,
  B00100,
  B00100,
  B00000,
  B01110,
  B10001,
};

void setup() {
  lcd.createChar(1,man_smail);// :) Регистрируем собственный символы с кодом 1 
//  lcd.createChar(1,man_smail2);// :( Регистрируем собственный символы с кодом 1  все возможно 8 штук
// мне шутка a5021 Он вторую ночь не спит, крутит, чтобы не останавливалось. :)
// значит устанваливаю веселый смайлик :) 
  lcd.begin(16,2);//rows,columns
//  lcd.clear();
//  lcd.setCursor(0,1);//lcd.print("art100 lcd test");//
  lcd.print("\1");
}
//=======================================
void loop(){
  lcd.setCursor(0,1);lcd.print("\1");
  lcd.setCursor(1,0);lcd.print( "cпасибо всем за");
  lcd.setCursor(0,1);lcd.print("активное участие");
  delay(1000);

}
//=======================================

Резаки от гнда 1к4 контраст 9к1 плюсак при 5 вольтах. Ангельска термиты с выражовываниями в транслитерации. :)

 

art100
Offline
Зарегистрирован: 09.03.2014

Kazanova пишет:

Хм,   а если краншафт перестанет крутится, то на мониторе будет висеть последнее значение ?

лень на такие мелочи как lcd.clear сейчас время тратить

 

art100
Offline
Зарегистрирован: 09.03.2014

надо сюда кинуть readme.txt мой чтобы гуугле проиндекисровал и я потом нашел

20150201 
1. Arduino IDE UTF-8 , LCD понимает только однобайтовые символы не UTF-8;

2. Китайские товарищи добавили в знакогенератор дисплея только набор дополнительных кириллических символов, 
никак не позаботившись о соблюдении вообще какой-либо кодировки. 
То есть, символ "Б" есть, а вот букву "А" надо использовать из английского набора. 
Зато есть дроби, значок евро, а также украинское "Г". 
Наверное, они рассуждали так: "напихаем побольше разных символов, а эти славяне со своей письменностью сами разберутся".

3.
В какую именно кодировку транслировать этот самый UTF-8 ? 
В мою: "я art100 благодарю неизвестного автора id"
Результат: LiquidCrystalRus.zip. 
Надо распаковать в С:\Program Files\arduino-0015хххххххх\hardware\libraries\  

Подключать с перекодировкой мою.

#include LiquidCrystalRus.h 

вместо стандартной #include LiquidCrystal.h 

Внутри вывод всего русского алфавита.
Проверьте, что дисплей имеет идентичный знакогенератор.

4. "неизвестный автор id"
Несколько слов о том, как все это работает. 
В памяти программ (а вовсе не в ОЗУ, которого катастрофически мало) создается таблица трансляции. 
В метод send добавлен код, 
который при попадании в него старшего и младшего символа кодированного UTF-8 
производит необходимые вычисления и посылает нужный байт в дисплей.

Собственно, главная тонкость - это подключить процедуры работы с памятью программ #include avr/pgmspace.h 
и объявить массив трансляции таким образом:

PROGMEM prog_uchar utf_recode[] = {...};

затем к нему можно обращаться так:

pgm_read_byte_near(utf_recode+index);

Особого распухания кода не происходит, потому что подключается не библиотека, 
а макросы, которые разворачиваются в ассемблерные вставки.