Библиотека uc1601s

timer_23
Offline
Зарегистрирован: 06.08.2014

Всем привет. Я еще мало владею с++. Искал библиотеку для работы с контроллерами uc1601s. Нашел но для другой платформы.
Библиотека - http://svetomuzyka.narod.ru/project/UC1601s.html

Связавшись с автором, он сказал мне, что его библиотеку можно легко переписать под ардуину. Нужно лишь состыковать i2c интерфейс.
Правильно ли я понял. Что нужно адаптировать эти команды под ардуино стреду?

void I2C_Open (void); // настройка MSSP модуля
void i2c_idle (void); // проверка на готовность I2C устройства к работе
void i2c_stop (void); // формирование стоп
char i2c_start (char adres, char C_D, char R_W); // адрес устройства и управление младшими битами
char i2c_restart (char adres, char C_D, char R_W);
char i2c_write (char data); //запись байта
char i2c_read_ack (void); //чтение с подтвеждением
char i2c_read_noack (void); //чтение без подтеждения

timer_23
Offline
Зарегистрирован: 06.08.2014

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

Radjah
Offline
Зарегистрирован: 06.08.2014

А Wire чем не угодила?

timer_23
Offline
Зарегистрирован: 06.08.2014

А можно подробнее?

Radjah
Offline
Зарегистрирован: 06.08.2014

Подробнее некуда

https://www.arduino.cc/en/Reference/Wire

timer_23
Offline
Зарегистрирован: 06.08.2014

Я о том. Что напрямую с помощью этой библиотеки общаться с дисплеем. ?

Radjah
Offline
Зарегистрирован: 06.08.2014

Ну тебя дисплей на twi/i2c? Если да, то либы для всяких подобных устройств обычно с помощью этой либы и мутятся.

timer_23
Offline
Зарегистрирован: 06.08.2014

Все. Понял вас)

timer_23
Offline
Зарегистрирован: 06.08.2014

Ищу человека. Котррый сможет переписать данную библиотеку под ардуину. Конечно не бесплатно.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

попробую переписать.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Общая концепция того, что получилась тут https://yadi.sk/d/V5BD1Dvq3CRtfj

Не проверял на компилируемость, ошибки и прочую ересь. Возможно придется допилить.

timer_23
Offline
Зарегистрирован: 06.08.2014

Быстро вы)) Я сколько тыкал нифига не смог... надо учиться)

Попробывал компильнуть. Ругается на функцию clear();


HelloWorld.ino: In function 'void setup()':
HelloWorld:10: error: no matching function for call to 'UC1601::clear()'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:36: note: candidates are: void UC1601::clear(uint8_t)

Но больше всего ошибок на переменные.

In file included from HelloWorld.ino:2:
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:117: error: ISO C++ forbids initialization of member 'buf_size'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:117: error: making 'buf_size' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:117: error: ISO C++ forbids in-class initialization of non-const static member 'buf_size'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:118: error: ISO C++ forbids initialization of member '_rs_pin'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:118: error: making '_rs_pin' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:118: error: ISO C++ forbids in-class initialization of non-const static member '_rs_pin'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: ISO C++ forbids initialization of member 'poz'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: making 'poz' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: ISO C++ forbids in-class initialization of non-const static member 'poz'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: ISO C++ forbids initialization of member 'pozB'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: making 'pozB' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:121: error: ISO C++ forbids in-class initialization of non-const static member 'pozB'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:122: error: ISO C++ forbids initialization of member '_row'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:122: error: making '_row' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:122: error: ISO C++ forbids in-class initialization of non-const static member '_row'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:123: error: ISO C++ forbids initialization of member '_col'
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:123: error: making '_col' static
C:\Users\User\Desktop\arduino-1.0.6\libraries\UC1601/lcd_UC1601.h:123: error: ISO C++ forbids in-class initialization of non-const static member '_col'

Делал в двух версиях 1.0.6 и последней 1.8.1

 

timer_23
Offline
Зарегистрирован: 06.08.2014

Нде. сколько ковыряюсь, никак не могу убрать ошибки. Дурья голова....

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

Там есть uc1601, но это не тот же самый коетроллер что uc1601s

timer_23
Offline
Зарегистрирован: 06.08.2014

Пытаюсь с чистого листа написать эту библиотеку основываясь на том, что скинул NeiroN. Начал с иницилизации дисплея. и иде выдает ошибку. которую я никак не могу понять. Может кто поможет?

tic154a.c

#include "tic154a.h"

#include <avr/pgmspace.h>
#include <inttypes.h>
#include "Arduino.h"
#include "Wire.h"

volatile uint8_t _rs, _addr;

void TIC154A::TIC154A(uint8_t rs, uint8_t addr)
{
	_addr = addr;
	_rs_pin = rs;
}

void TIC154A::Inicialize(){
	if(_rs_pin != 0){
	  pinMode(_rs_pin, OUTPUT);
	  digitalWrite(_rs_pin,HIGH);// индикатор вывести из сброса
	  delay(10);				   // 16 000 = 1мС - 10мС
	}	
	Wire.begin();
	Wire.beginTransmission(_addr);// 0x70 адрес индикатора
	Wire.write(0b11100010);
	Wire.endTransmission();
	delay(10);			     // 16 000 = 1мС - 10мС	
	Wire.begin();
	Wire.beginTransmission(_addr);// 0x70 адрес индикатора
	Wire.write(LCD_BIAS6);  // BIAS 6
	Wire.write(LCD_VBIAS);  // настройка Vbias
	Wire.write(120);		 // 124
	Wire.write(LCD_LEFTRIGHT);  // настройка типа разветки свеху в низ, и слево на право
	Wire.write(LCD_ENABLE);	 // Включить дисплей
	Wire.endTransmission();

	Clear_LCD(); 			     // очистка дисплея
}

void TIC154A::Clear_LCD(uint8_t tip)
{
	memset(buf,0,255);
	buf_size = 0;
	_row=0;
	_col=0;
	cursorY=0;
	cursorX=0;
	int a;
	Wire.begin();
	Wire.beginTransmission(_addr);
	Wire.write(LCD_PAGE); 	// страница 0
	Wire.write(0x00); 	// колонка 0
	Wire.write(LCD_COLM); 	//		 
	Wire.endTransmission();
	
	Wire.begin();
	Wire.beginTransmission(_addr);
	if (tip==0)	for (a=0;a<1056;a++)Wire.write(0x00);
	else 	if(tip==1) for (a=0;a<1056;a++)Wire.write(0xFF);
	else 	for (a=0;a<528;a++)	{Wire.write(0xAA);Wire.write(0x55);}
	Wire.endTransmission();
}

tic154a.h

#ifndef tic154a
#define tic154a

#include <inttypes.h>
#include "Print.h" 
#include <Wire.h>

// commands
#define LCD_PAGE 0b10110000
#define LCD_COLN 0b00001111
#define LCD_COLM 0b00010000
#define LCD_MOVE 0b10001011
#define LCD_MOVEB 0b10001001
#define LCD_BIAS6 0b11101011
#define LCD_VBIAS 0b10000001
#define LCD_LEFTRIGHT 0b11000110
#define LCD_ENABLE 0b10101111

#define CD B00000010  // Command/Data bit
#define RW B00000001  // Write/Read bit

class TIC154A 
{
	TIC154A (uint8_t rs, uint8_t addr);
	void Inicialize();
	void Clear_LCD(uint8_t tip);
}

#endif

main.ino

#include <tic154a.h>
#include <Wire.h>

TIC154A Lcd (8,112);
void setup() {
 Lcd.Inicialize();
 Lcd.Clear_LCD(0);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Собственно сама ошибка из IDE

Arduino: 1.6.0 (Windows 8), Плата"Arduino Uno"

Using library tic154a in folder: E:\arduino-1.6.0\libraries\tic154a (legacy)

Using library Wire in folder: E:\arduino-1.6.0\hardware\arduino\avr\libraries\Wire 



E:\arduino-1.6.0/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IE:\arduino-1.6.0\hardware\arduino\avr\cores\arduino -IE:\arduino-1.6.0\hardware\arduino\avr\variants\standard -IE:\arduino-1.6.0\libraries\tic154a -IE:\arduino-1.6.0\hardware\arduino\avr\libraries\Wire E:\TMP\build4680243901608837322.tmp\main.cpp -o E:\TMP\build4680243901608837322.tmp\main.cpp.o 

In file included from E:\arduino-1.6.0\hardware\arduino\avr\cores\arduino/Arduino.h:26:0,
                 from main.ino:4:
/arduino-1.6.0/hardware/tools/avr/avr/include/math.h:121:8: error: expected unqualified-id before string constant
 extern "C" {
        ^
Ошибка компиляции.

 

 

//*****

PDF на контроллер дисплея