Der deutsche DCS-BIOS-Thread: Für Simpit-Bastler und solche, die es werden wollen - Page 23 - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 09-20-2019, 04:38 PM   #221
RightStuff
Senior Member
 
RightStuff's Avatar
 
Join Date: Mar 2009
Location: Germany
Posts: 1,333
Default

Hi und welcome!

Warum willst Du die Matrix unbedingt an DCSBios knoten?
Wenn soweit alles fertig ist, flashe den Arduino doch einfach neu und lass ihn eigenes HID-Device mit DX-Buttons sein.
RightStuff is offline   Reply With Quote
Old 09-20-2019, 04:44 PM   #222
Heling
Junior Member
 
Join Date: Mar 2015
Location: next to FRA
Posts: 12
Default

Quote:
Originally Posted by RightStuff View Post
Hi und welcome!

Warum willst Du die Matrix unbedingt an DCSBios knoten?
Wenn soweit alles fertig ist, flashe den Arduino doch einfach neu und lass ihn eigenes HID-Device mit DX-Buttons sein.

Hmm,
Ich habe mit dem Thema Verkabelung zu DCS gerade erst begonnen. Da gibt es offensichtlich noch große Wissenslücken bei mir... Wenn es da einen einfacheren Weg gibt, nehme ich den gerne. Wo finde ich was zu deiner Lösung? Immerhin könnte ich 100 Schalter mit einem Arduino abfrühstücken!
Heling is offline   Reply With Quote
Old 09-21-2019, 07:54 AM   #223
RightStuff
Senior Member
 
RightStuff's Avatar
 
Join Date: Mar 2009
Location: Germany
Posts: 1,333
Default

Hoi...
für Deinen gegeschlagenen Weg via Matrix bietet sich das hier an:
https://forums.eagle.ru/showthread.php?t=117011

Gibt sonst noch viele andere Lösungen, die dann aber das 32 Button-Limit berücksichtigen, falls notwendig.

Der Vollständigkeit halber noch eine andere sehr interessant Lösung, die auf Basis von Shift-Registern:
https://forums.eagle.ru/showthread.php?t=120049

Es führen eben immer viele Wege nach Rom.
RightStuff is offline   Reply With Quote
Old 09-21-2019, 10:10 AM   #224
Heling
Junior Member
 
Join Date: Mar 2015
Location: next to FRA
Posts: 12
Default

Moin,
super! Danke für die Infos. Ich werde mal die erste Möglichkeit untersuchen. Ich möchte möglichst wenig Hardware zwischen Schalter und DSC haben. Das vereinfacht Aufbau, Fehlersuche und Wartung.
Heling is offline   Reply With Quote
Old 10-20-2019, 01:45 PM   #225
BlackLibrary
Member
 
BlackLibrary's Avatar
 
Join Date: May 2017
Location: Nbg, Franken (Ger)
Posts: 408
Default

Es Gibt ein neues BIOS:
New Stable Release:

F-16 komplett hinzugefügt

(Changelog enthält alle Änderungen seit der v.0.7.30)

+AV8BNA - Fixed Flaps Mode / Power Switch,Radio Readouts for DCS Flightpanels, Add Canopy Position, Stopwatch update, some new Readouts by Matchstick
+A-10C - Add Canopy Position
+A-4E - Add Canopy Position
+C-101 - Add last Beta Patch changes,Add Canopy Position
+F-14 - Add Canopy Position; Clock fixed; HUD trim fixed; Add additional entrys for SLATS, FLAPS, Airbrake to show up as light too (by Bullitt)
+F-16C - Added; all problems from the Pre-releases fixed; DED Export
+F-18 - Add FLIR POD, Add Canopy Position, Fixed missing Pull funktion for RADAR Switch
+F5 - IAS Knob fixed, Add Canopy Position
+L39 - Readouts for Radio Presets
+M2000C - Fix some switches with missing device, Added Indikators by Matchstick
+MB-339 - Update for v2.0
+Mi8 - RadarAlt fixes, cleanup
+NS430 - Added all Planes that can use the NS430
+UH1H - added missing RadarAlt Numbers, Color description for Indicator Lights

+Mods - Add VSN-F-16 BLK50, AC-130, RST_Eurofighter Mod

+Add dcs-bios-arduino-library-0.2.19 (new CDU Font, see seperate changelog in zip)

*Testers needed for: FW190 A8, MB-339PAN, MiG-15bis, MiG-19P, Yak-52

Link: https://github.com/DCSFlightpanels/d...ses/tag/0.7.31

viel Spaß
BlackLibrary is offline   Reply With Quote
Old 10-27-2019, 07:53 PM   #226
Heling
Junior Member
 
Join Date: Mar 2015
Location: next to FRA
Posts: 12
Question Caution board Problem

Hi
Habe ein Caution board und die Ansteuerung von Craig S. übernommen. (https://youtu.be/a1i-yfLFpPw)
Physikalisch alles okay. Aber sobald das DCS-Bios die Werte liefert stimmen die Positionen nicht. Auch schalten sich schon ein paar LEDs ein wenn die A-10 noch ohne Batterie ist. Ich raffe das mit der Matrix nicht.

Der Code ist exakt wie Craig's und doch klappt es bei mir nicht. Er hat seitdem auch nichts am Code verändert. Hat jemand eines gebaut und es läuft untere DCS-BIOS?
So sieht mein Code aus:


/*
Tell DCS-BIOS to use a serial connection and use interrupt-driven
communication. The main program will be interrupted to prioritize
processing incoming data.

This should work on any Arduino that has an ATMega328 controller
(Uno, Pro Mini, many others).
*/

#define DCSBIOS_IRQ_SERIAL
//#define DCSBIOS_DEFAULT_SERIAL

#include <LedControl.h>
#include <DcsBios.h>

//pin12 is connected to the DataIn
//pin10 ito the CLK
//pin11 to the CS

LedControl lc=LedControl(12,10,11,1);//DIN, CLK, CS, # of IC's

unsigned char cl_row_map[48] = {

0,2,4,6,
0,2,4,6,
0,2,4,6,
0,2,4,6,
0,2,4,6,
0,2,4,6,
1,3,5,7,
1,3,5,7,
1,3,5,7,
1,3,5,7,
1,3,5,7,
1,3,5,7,
};

#define SEG_DP (1<<7)
#define SEG_A (1<<6)
#define SEG_B (1<<5)
#define SEG_C (1<<4)
#define SEG_D (1<<3)
#define SEG_E (1<<2)
#define SEG_F (1<<1)
#define SEG_G (1<<0)
unsigned char cl_mask_map[48]= {

SEG_DP,SEG_DP,SEG_DP,SEG_DP,
SEG_B,SEG_B,SEG_B,SEG_B,
SEG_C,SEG_C,SEG_C,SEG_C,
SEG_D,SEG_D,SEG_D,SEG_D,
SEG_E,SEG_E,SEG_E,SEG_E,
SEG_G,SEG_G,SEG_G,SEG_G,
SEG_G,SEG_G,SEG_G,SEG_G,
SEG_E,SEG_E,SEG_E,SEG_E,
SEG_D,SEG_D,SEG_D,SEG_D,
SEG_C,SEG_C,SEG_C,SEG_C,
SEG_B,SEG_B,SEG_B,SEG_B,
SEG_DP,SEG_DP,SEG_DP,SEG_DP,
};
unsigned char max7219_rows[8];

void setup() {
DcsBios::setup();
memset(max7219_rows, 0xff, sizeof(max7219_rows));

lc.shutdown(0,false); //turn on the display
lc.setIntensity(0,15);//set the brightness
lc.clearDisplay(0); //clear rthe display and get ready for new data
}

void updateCautionLights(unsigned int address, unsigned int data) {
unsigned char clp_row = (address - 0x10d4) * 2;
unsigned char start_index = clp_row * 4;
unsigned char column = 0;
unsigned char i;

bool is_on;
for (i=0; i<16; i++) {
is_on = data & 0x01;
// set caution light state (clp_row, column, is_on)
if (is_on) {
max7219_rows[cl_row_map[start_index+i]] |= cl_mask_map[start_index+i];
} else {
max7219_rows[cl_row_map[start_index+i]] &= ~(cl_mask_map[start_index+i]);
}
data >>= 1;
column++;
if (column == 4) {
clp_row++;
column = 0;
}
}

}

void onClpData1Change(unsigned int newValue) {
updateCautionLights(0x10d4, newValue);
}
DcsBios::IntegerBuffer clpData1(0x10d4, 0xffff, 0, onClpData1Change);

void onClpData2Change(unsigned int newValue) {
updateCautionLights(0x10d6, newValue);
}
DcsBios::IntegerBuffer clpData2(0x10d6, 0xffff, 0, onClpData2Change);

void onClpData3Change(unsigned int newValue) {
updateCautionLights(0x10d8, newValue);
}
DcsBios::IntegerBuffer clpData3(0x10d8, 0xffff, 0, onClpData3Change);

void loop() {
DcsBios::loop();

// update MAX7219
unsigned char i;
for (i=0; i<8; i++) {
lc.setRow(0, i, max7219_rows[i]);
}
}


Und so die Matrix (von hinten - ENG START CYCLE ist oben rechts):
Attached Thumbnails
Click image for larger version

Name:	20191027_204636 (2).jpg
Views:	31
Size:	1.35 MB
ID:	220037  
Heling is offline   Reply With Quote
Old 10-30-2019, 09:39 PM   #227
Heling
Junior Member
 
Join Date: Mar 2015
Location: next to FRA
Posts: 12
Default

Nicht alle auf einmal
Es liegt wohl am BIOS. Ich habe verschiedene Varianten aus den entsprechenden Threads getestet und alle liefern exakt den gleichen Durcheinander. Ich habe es auf Mega, Nano und Uno getestet. Immer das gleiche Bild, auch direkt am MAX7219 Ausgang. Kann das jemand nachvollziehen?
Heling is offline   Reply With Quote
Old 10-30-2019, 10:14 PM   #228
[FSF]Ian
ED Testers Team
 
Join Date: Feb 2013
Location: Germany
Posts: 1,287
Default

Quote:
Originally Posted by Heling View Post
Physikalisch alles okay. Aber sobald das DCS-Bios die Werte liefert stimmen die Positionen nicht. Auch schalten sich schon ein paar LEDs ein wenn die A-10 noch ohne Batterie ist.
Wenn die falschen LEDs angehen und einige schon an sind, wenn das CLP im virtuellen Cockpit noch dunkel ist, dann passen deine Hardware und dein Arduino-Sketch nicht zusammen.
Du musst also entweder deine Verdrahtung dem Sketch anpassen oder den Sketch deiner Verdrahtung anpassen.

Der MAX7219 hat eine 8x8-Matrix (8 Ziffern mit je 7+1 Segmenten, also 7 Segmente für die Zahl und einen für den Dezimalpunkt), kann also 64 LEDs ansteuern. Das Caution Lights Panel benutzt davon 8x6. Die Leitungen SEG_A und SEG_F werden nicht benutzt.

Diese Zeile hier:
memset(max7219_rows, 0xff, sizeof(max7219_rows));
schaltet erstmal im setup() alle LEDs ein.

Wenn davon welche anbleiben, sobald die Daten fließen (und alle Lampen im Cockpit aus sind), dann hast du LEDs mit SEG_A oder SEG_F verbunden, was in dem Schaltplan nicht vorgesehen ist.

Guck dir mal die Variablen cl_row_map und cl_mask_map an, die sind schon so formatiert, dass man da visuell ganz gut sieht, welche LED womit verbunden sein muss. Z.B. sollte die obere linke LED mit "DIG 0" (digit 0) und SEG_DP (decimal point segment) verbunden sein.

Wenn dann die Positionen nicht stimmen, kannst du vielleicht ein Muster erkennen (z.B. zwei bestimmte Zeilen vertauscht) und dann den Sketch so anpassen, dass das wieder richtig gedreht wird.
[FSF]Ian is offline   Reply With Quote
Old 10-31-2019, 10:59 AM   #229
Heling
Junior Member
 
Join Date: Mar 2015
Location: next to FRA
Posts: 12
Default

Danke für die Tipps. Habe jetzt eine 8x8 LED-Matrix parallel geschaltet. Diese zeigt, das Segment A + F nicht benutzt sind. Auf dem Board habe ich sie auch nicht verdrahtet. Aber auch auf der LED-Matrix leuchten schon einige LEDs auf, sobald die serial connection bei kalter A-10 gestartet wird und beim Lampentest gehen auch nicht alle an.

Erstaunlicherweise kommt es darauf an ob ich zuvor mit 'memset(max7219_rows, 0xff, ...);' alle LEDs AUS oder AN hatte. Es leuchten dann mehr und weniger auf (s. Bilder: links zuvor 0x00, rechts zuvor 0xff)

Ich habe den Sketch tausendmal gecheckt und kann keinen Fehler finden. Woher kommen die Daten, die die LEDs ungewollt einschalten?
Ich bin echt für jeden Hinweis sehr dankbar, da mich das Problem schon tagelang aufhält.
Attached Thumbnails
Click image for larger version

Name:	cb2.jpg
Views:	18
Size:	1.30 MB
ID:	220276   Click image for larger version

Name:	cb1.jpg
Views:	20
Size:	1.61 MB
ID:	220278  
Heling is offline   Reply With Quote
Old 10-31-2019, 04:14 PM   #230
[FSF]Ian
ED Testers Team
 
Join Date: Feb 2013
Location: Germany
Posts: 1,287
Default

@Heling:
deine Hardware und der Sketch sind vermutlich beide richtig.

Der Fehler kommt daher, dass in diesem Commit hier etwas am Anfang der A-10C.lua hinzugefügt wurde, dadurch haben sich alle Adressen danach verschoben:

https://github.com/dcs-bios/dcs-bios...0eeae91665123b

Ich werde die Änderung im nächsten Release wieder rausnehmen, dann sollte das alles wieder stimmen.
[FSF]Ian is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 11:49 PM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.