Ви не увійшли.
Вот самые первые запросы. Один код балласта 0xF7 меняется на 0xFF когда уже происходит пуск на не остывшей лампе но я думаю нечего страшного.
Помоги пожалуйста так как в программировании я ноль.
балласт материнка
0x00 Самый первые запросы при включении.
0x7F
0xF2 Начинается под жиг лампы.
0xF0 0xF4
0xFF 0x22
0xFF 0x81
0xF7 0x81
0xFF 0x10
0xDC
0x81 Лампа полностью разожглась.
0xFE
0x81 Дальнейшие периодические запросы и ответы.
0xFF
Остання редакція JBS (2016-05-13 08:59:34)
Неактивний
привет, посмотрел на ваш лог, что то похожее на то что вы в таблице указали, единсвенно что мне не нравится в логе сигнал инвертирован мне помнится в ЮАРт данные нулем передаются, так что тут может быть ошибка
void serialEvent() {
data = Serial.read(); //set 'data' to input received from ballast
if (data == 0x00) Serial.write(0x7F);
if (data == 0x22) Serial.write(0xFF);
if (data == 0x81)
{
send++;
Serial.write(0xFE + ( send & 0x01) ); // 0xFE or 0xFF
}}
для начала..
А если инверсию не делать то ответ будет только таким 0x00 .
Неактивний
Ошибка вот такая.
Arduino: 1.6.8 (Windows 7), Плата:"Arduino Nano, ATmega328"
\Documents\Arduino\test2\test2.ino: In function 'void serialEvent()':
test2:2: error: 'data' was not declared in this scope
data = Serial.read(); //set 'data' to input received from ballast
^
test2:7: error: 'send' was not declared in this scope
send++;
^
exit status 1
'data' was not declared in this scope
Неактивний
что то не так в вашем королевстве
если есть возможность, попросите знакомого с осцилографрм посмотреть без каких либо искажений сигнал
martinways тоже делал инверсию так что должно работать правильно.
Только он огород городил с резисторами чтоб инверсию делать а я проще пошел программно про инвертировал. Инверсия стоит только на ответ от балласта. Запросы материнки не инвертированы пишутся так как есть. Могу подключить два переходника UART и сними данные снять. Но суда по тем данным которые я снимал ранее данные будут такими же.
Неактивний
Не могу понять как первоначальные данные применить ведь вначале балласт даёт код 0x00 на что потом материка отвечает 0x7F и следом материнка запрашивает 0xF2 и пошло поехало дальше .
Почему именно балласт задаёт вначале весь ход или это своеобразная аутентификация типа баласт исправен готов к работе а метерика говорит хорошо. Или наоборот происходит так балласт говорит что сброшены настройки по дефолту а мать говорит что сброс принят. Вот что самое интересное как правильно прописать этот момент. Ну и конечно же момент с вторичными запросами когда работает уже.
Остання редакція JBS (2016-05-13 16:30:33)
Неактивний
И ещё балласт включается от другого оптрона по логическому состоянию 1 а выключение тоже происходит по тому же оптрону логическим состоянием 0. Нет никакого кода от материнки только логическое состояние как в ардуино реализовывать тоже самое. Что касается электроники я могу сделать плату цивильную чтоб можно было присоединять к ардуино заготовка уже есть а вот код написать самостоятельно не смогу.
Остання редакція JBS (2016-05-13 17:02:05)
Неактивний
Ух блин чуть не очумел отказал чужой балласт аж поплохело малость.
Вскрытие выявило что помер оптрон ответа балласта заменил его и балласт заново заработал.
Уф пронесло не хватало чужой балласт угробить.
Снова снял данные ни чем не отличаются точно такие же.
Пробовал прописать вот так но не работает.
int data;
int StatusLamp;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
void setup() {
StatusLamp = INIT1;
Serial.begin(4800, SERIAL_8E1);
}
void loop() {
}
void func_unique_request( int data )
{
switch ( data )
{
case 0x7F: Serial.write(0x00); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x7F: Serial.write(0x00); break;
case 0xF2: Serial.write(0xF0); break;
case 0xF4: Serial.write(0xFF); break;
case 0x22: Serial.write(0xFF); break;
case 0x81: Serial.write(0xFF); break;
case 0x10: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFE); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFF); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
}
void func_WORK2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFF); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
Неактивний
Сделал инверсию канала как martinways получились немного другие данные.
https://cloud.mail.ru/public/BJRt/EJZ756F3F
Чёт у меня даже инициализация не проходит на ардуино молчит проектор как без балласта.
Замучился уже надо думаю оптроны сменить подозрение на хилые оптроны.
Только плин в радио лавке нет оптронов придётся со старых блоков питаний выдрать и заново экспериментировать.
Балласт Материна
ИНИЦЫАЛИЗАЦИЯ
0x7F
0xF2
0x01 0xF4
0x1F 0x22
0x22
ПОДЖИГ ЛАМПЫ
0x81
0x0D
РАБОТА
0x81
0x8E 0x10
0x10 0x81
0x8E 0x81
0x8F 0x81
0x90 0x81
0x91 0x81
0x92 0x81
0x93 0x81
0x94 0x81
0x95 0x81
0x96 0x81
0x97 0x81
0x98 0x81
0x99 0x81
0x9A
Остання редакція JBS (2016-05-16 16:13:17)
Неактивний
Ура заработала.
Осталось сброс сделать а то когда выключаешь проектор ардуино не сбрасывает значения. Как это сделать помогите я так полагаю завести на какой то вход сигнал о включении лампы который сейчас свободен и по его сигналу делать сброс. а может в коде где ошибка.
Да и интересный факт ардуино должна быть всегда питаться ато не запускается. А питание 3.3 вольта появляются только после инициализации вот ине запускалась она пока я отдельно не запитал её.
int data;
int StatusLamp;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
void setup() {
StatusLamp = INIT1;
Serial.begin(4800);
}
void loop() {
}
void func_unique_request( int data )
{
switch ( data )
{
case 0xF2: Serial.write(0x01); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x00: Serial.write(0x00); break;
case 0xF2: Serial.write(0x01); break;
case 0xF4: Serial.write(0x1F); break;
case 0x22: Serial.write(0x22); break;
case 0x81: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x8C); break;
case 0x10: Serial.write(0x10); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x9A); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
}
void func_WORK2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x99); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
Остання редакція JBS (2016-05-16 19:53:49)
Неактивний
JBS, Вы правы, больше никакой демагогии в этой теме.
Чтоб тебе стыдно было выкладываю код рабочий.
Да потратил много времени и нервов плюс знакомые помогли но всё же обошелся без тебя.
int data;
int StatusLamp;
int flag=0;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
#define BUTTON 2
void(* resetFunc) (void) = 0; // Reset MC function
void setup() {
StatusLamp = INIT1;
Serial.begin(4800);
pinMode(BUTTON,INPUT);
}
void loop() {
if(flag==1)
{
Serial.end();
delay(5000);
StatusLamp = INIT1;
Serial.begin(4800);
flag=0;
}
}
void func_unique_request( int data )
{
switch ( data )
{
case 0xF2: Serial.write(0x01); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x00: Serial.write(0x00); break;
case 0xF2: Serial.write(0x01); break;
case 0xF4: Serial.write(0x1F); break;
case 0x22: Serial.write(0x22); break;
case 0x81: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x8C); break;
case 0x10: Serial.write(0x10); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
if(digitalRead(BUTTON)==0)
{
switch ( data )
{
case 0x81: Serial.write(0x9A); break;
default : func_unique_request(data); break;
}
}
else
{
Serial.write(0x18);
delay(100);
Serial.write(0x00);
flag=1;
//resetFunc(); //вызов
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
else StatusLamp = INIT1;
}
void func_WORK2( int data )
{
if(digitalRead(BUTTON)==0)
{
switch ( data )
{
case 0x81: Serial.write(0x99); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
else StatusLamp = INIT1;
}
else
{
Serial.write(0x18);
delay(100);
Serial.write(0x00);
flag=1;
//resetFunc(); //вызов
}
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
Неактивний
JBS, Вы молодцы, поздравляю
Спасибо.
Я же вам говорил что я электронщик вот нормальный результат изготовления платы всё цивильно.
Вот тут в ворде всё написал и плата там для лута есть.
https://cloud.mail.ru/public/KmTF/662Nt2THh
Плата получилась маленькая 4x5 сантиметра ардуино сделал чтоб можно было отсоединять на панельке вставляется в плату.
Очень удобно было при отладке снял записал вставил.
Тут видео.
Видео работы эмулятора
Неактивний
Hello Участник
Respect. Your tag is great.
I want to rebuild my ACER H6510BD on LED.
could you help me?
The circuit almost looks like yours, but it
does not work for the ACER.
In a ACER is installed Osram PT VIP 05 Compact.
darek.nassa(@)yandex.com
Hi, did You try to use the code from this page?
http://forum.arduino.ua/viewtopic.php?pid=1837#p1837
it Was written for PT-VIP-03MID and as i saw on Your photos the controller on your board looks exactly the same
Best regards
I have tried all versions of this page, but it does not work.
Maybe error in the circuit.
Circuit:
https://www.dropbox.com/s/wa3br19zbx2tt … 7.jpg?dl=0
The circuit looks ok, did you remember to cross the tx and rx channels? (TX on arduino-> RX on projector motherboard, RX on arduino-> TX on projector motherboard)
I also have DLP projector from Dell with Osram ballas- now i'm waiting for arduino mini to start playing with him, but i don't have any experience with coding:( but never too late to start learning it:)
I will focus on the code:
#include <SoftwareSerial.h>
int data;
int rest;
int StatusLamp;
int ledPin = 13;
int cmd_2b = 0;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
#define TAG_LEN 2
#define ARR_LEN 1
byte code[TAG_LEN];
int bytes_read = 0;
char ss[] = {0x72, 0x60};
void setup() {
StatusLamp = INIT1;
Serial.begin(9600, SERIAL_8E1);
pinMode(13, OUTPUT);
}
void loop() {
(...)
I'm wondering about the line: pinMode(13, OUTPUT)
It suggest that output communication is made on pin #13, maybe we have to use it as TX pin?
Good luck:)
Hello Участник
Respect. Your tag is great.
I want to rebuild my ACER H6510BD on LED.
could you help me?
The circuit almost looks like yours, but it
does not work for the ACER.
In a ACER is installed Osram PT VIP 05 Compact.darek.nassa(@)yandex.com
Hi need usb logic analyzer since each projector communication codes are different.
Well, and connect this pattern to remove data exchange fully working projector with a lamp
Остання редакція JBS (2016-06-29 19:25:30)
Неактивний
Hello. I friend gave me this link, and maybe one of you will be helpful with me in english (i`m Romanian ). I have a Sanyo PLC-XE31 with PT VIP 3AC/380 03 Rev. 2 from OSRAM. I want to try the schematics posted by martinways on 2015-04-11 10:33:04 with following code.
#include <SoftwareSerial.h>
int data;
int rest;
int StatusLamp;
int ledPin = 13;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
#define TAG_LEN 2
#define ARR_LEN 1
byte code[TAG_LEN];
int bytes_read = 0;
char ss[] = {0x72, 0x60};
void setup() {
StatusLamp = INIT1;
Serial.begin(9600, SERIAL_8E1);
pinMode(13, OUTPUT);
}
void loop() {
}
void serialEvent() {
while (Serial.available() > 0)
data = Serial.read();
//Serial.flush();
//delay(200);
switch ( data )
{
case 0x00: Serial.write(0x00); break; //echo
case 0x70: Serial.write(0x70); break; // Enable comnication
case 0xF0: Serial.write(0xF0); Serial.write(0x01); break;// Company ID.
case 0xF1: Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11);; break; //Lamp driver ID
case 0xF3: Serial.write(0xF3); Serial.write(0x00); break;
case 0xF2: Serial.write(0xF3); Serial.write(0x64); break;
case 0xF4: Serial.write(0xF4); Serial.write(0x80); break;
case 0xF6: Serial.write(0xF6); Serial.write(0x02); break;
case 0xFA: Serial.write(0xFA); Serial.write(0x60); break;
case 0xFB: Serial.write(0xFB); Serial.write(0x80); break;
//case (0x72 && 0x60): Serial.write(0x72); Serial.write(0x60); break;
case 0xF5: Serial.write(0xF5); Serial.write(0x01); break;
default : func_2hex_read(data); break;
}
}
void func_2hex_read(int data) {
digitalWrite(ledPin, HIGH);
}
void software_Reset()
// Restarts program from beginning but
// does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}
My wonder is what pin 2 is for? I do not understand what is written there.
Thank you!
Неактивний
On the foto, pin 2 from motherboard side is a arrow and a text.
http://forum.arduino.ua/img/members/161/schem.jpg
Остання редакція neckro (2016-09-13 23:58:31)
Неактивний
hello
"сигнал включения драйвера светодиода" - the signal LED drivers ON/OFF
original picture
http://forum.arduino.ua/img/members/17/ … isunok.jpg
WARNING!
http://forum.arduino.ua/img/members/161/schem.jpg
this is a bad scheme (, please do not use
//----------------------------
follow JBS 2016-05-30 18:40:28
http://forum.arduino.ua/viewtopic.php?pid=3515#p3515
Неактивний
this code you did?
#include <SoftwareSerial.h>
int data;
int rest;
int StatusLamp;
int ledPin = 13;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
#define TAG_LEN 2
#define ARR_LEN 1
byte code[TAG_LEN];
int bytes_read = 0;
char ss[] = {0x72, 0x60};
void setup() {
StatusLamp = INIT1;
Serial.begin(9600, SERIAL_8E1);
pinMode(13, OUTPUT);
}
void loop() {
}
void serialEvent() {
!!!!!!!!!!!!
while (Serial.available() > 0)
data = Serial.read(); ???????????????????????
!!!!!!!!!!!!!!!!
//Serial.flush();
//delay(200);
switch ( data )
{
case 0x00: Serial.write(0x00); break; //echo
case 0x70: Serial.write(0x70); break; // Enable comnication
case 0xF0: Serial.write(0xF0); Serial.write(0x01); break;// Company ID.
case 0xF1: Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11);; break; //Lamp driver ID
case 0xF3: Serial.write(0xF3); Serial.write(0x00); break;
case 0xF2: Serial.write(0xF3); Serial.write(0x64); break;
case 0xF4: Serial.write(0xF4); Serial.write(0x80); break;
case 0xF6: Serial.write(0xF6); Serial.write(0x02); break;
case 0xFA: Serial.write(0xFA); Serial.write(0x60); break;
case 0xFB: Serial.write(0xFB); Serial.write(0x80); break;
//case (0x72 && 0x60): Serial.write(0x72); Serial.write(0x60); break;
case 0xF5: Serial.write(0xF5); Serial.write(0x01); break;
default : func_2hex_read(data); break;
}
}
void func_2hex_read(int data) {
digitalWrite(ledPin, HIGH);
}
void software_Reset() ????????????
// Restarts program from beginning but
// does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}
Неактивний
Hello NoName and thank you for answer. The friend of mine, gave me that photo with 2 octocuplors schematics. I have now 4 of PC 817 (Sharp) optocuplors and some 100 ohm resistors, and a Arduino UNO. What schematics should i use for PT VIP 3AC/380 03 Rev. 2 ? Thank you.
Неактивний