Samstag, 17. Dezember 2011
Konzept für Arduino, MIP
2. Ich löte mir meine eigenen "BreakOutBoards" zusammen. Damit ist es leichter die einzelnen LEDs und Encoder zu verkabeln
3. Das MIP ist bis auf Gear Lever, Clock, die Schalter, und Rotary Switches fertig. Die LEDs muss ich noch gemäß meinem Schema verkabeln.
Mittwoch, 7. Dezember 2011
Donnerstag, 24. November 2011
XPLANE 10, neues Arduino Programm, MCP fertig gebaut
Endlich ist XPLANE 10 raus! Sieht schonmal sehr gut aus: XPLANE
weiters habe ich eine neue um einiges verbesserte Beta Version welche annimmt, dass alle Variablen auf den Plätzen 901-999 7 Segment Werte sind. Rundherum 100 -899 LEDS. Noch ist nur ALtitude auf 901 bei mir zu testzwecken - es werden alle Verlinkungen auf einer SD Karte in einem TEXT file abgespeichert sein - spricht für leichtes Updaten der Variablen. Ich verwende PRosim737 mit XPUIPC (Xplane läuft jetzt bald auf einer Windows Partition - geht sehr viel leichter). Getestet habe ichs schon am "fertigen" MCP.
//® by Ma®c
#include "LedControl.h"
#include <SPI.h>
#include <Ethernet.h>
//Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,219 };
byte server[] = { 192,168,0,214 };
Client client(server, 8092);
//LedControl
LedControl lc=LedControl(7,6,5,1);
unsigned long delaytime=250;
//STRING for incoming
String StringAnswer = "";
//char for incoming
char i;
//counter
int counter = 0;
//LEDs on off
int LedOnOff;
void setup() {
//ETHERNET
Ethernet.begin(mac, ip);
//SERIAL
Serial.begin(115200);
//7 Segment
lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);
if (client.connect()) {
Serial.println("connected");
lc.setChar(0,0,'y', false);
lc.setChar(0,1,'E', false);
lc.setChar(0,7,'S', false);
}
else {
Serial.println("connection failed");
lc.setChar(0,7,'F', false);
lc.setChar(0,4,'A', false);
lc.setDigit(0,5,1, false);
lc.setChar(0,6,'L', false);
delay(10000);
}
}
void Subscribe(){
client.println("Arn.Inicio:230"); //ALtitude dial MCP
}
void loop(){
while (counter < 11) {
ReadEthernet();
}
if (StringAnswer.charAt(10) != 9) {
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
LedLightup();
}
if (StringAnswer.charAt(10) == 9) {
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
sevenSegment();
}
}
void ReadEthernet() {
i = client.read();
StringAnswer += i;
counter ++;
}
void LedLightup(){
char hundreds = StringAnswer.charAt(10);
char tens = StringAnswer.charAt(11);
char ones = StringAnswer.charAt(12);
String StringNumber ;
StringNumber += hundreds;
StringNumber += tens;
StringNumber += ones;
if (StringAnswer.charAt(14) = 0) {
int LedOnOff = 0;
}
if (StringAnswer.charAt(14) != 0) {
int LedOnOff = 1;
}
StringAnswer = "";
counter = 0;
}
void sevenSegment() {
char one = StringAnswer.charAt(14);
char two = StringAnswer.charAt(15);
char three = StringAnswer.charAt(16);
char four = StringAnswer.charAt(17);
char five = StringAnswer.charAt(18);
if (StringAnswer.charAt(11) == 0) {
if (StringAnswer.charAt(12) == 1) {
lc.setChar(0,7,one,false);
lc.setChar(0,4,two,false);
lc.setChar(0,5,three,false);
lc.setChar(0,6,four,false);
lc.setChar(0,2,five,false);
StringAnswer = "";
counter = 0;
}
}
}
weiters habe ich eine neue um einiges verbesserte Beta Version welche annimmt, dass alle Variablen auf den Plätzen 901-999 7 Segment Werte sind. Rundherum 100 -899 LEDS. Noch ist nur ALtitude auf 901 bei mir zu testzwecken - es werden alle Verlinkungen auf einer SD Karte in einem TEXT file abgespeichert sein - spricht für leichtes Updaten der Variablen. Ich verwende PRosim737 mit XPUIPC (Xplane läuft jetzt bald auf einer Windows Partition - geht sehr viel leichter). Getestet habe ichs schon am "fertigen" MCP.
//® by Ma®c
#include "LedControl.h"
#include <SPI.h>
#include <Ethernet.h>
//Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,219 };
byte server[] = { 192,168,0,214 };
Client client(server, 8092);
//LedControl
LedControl lc=LedControl(7,6,5,1);
unsigned long delaytime=250;
//STRING for incoming
String StringAnswer = "";
//char for incoming
char i;
//counter
int counter = 0;
//LEDs on off
int LedOnOff;
void setup() {
//ETHERNET
Ethernet.begin(mac, ip);
//SERIAL
Serial.begin(115200);
//7 Segment
lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);
if (client.connect()) {
Serial.println("connected");
lc.setChar(0,0,'y', false);
lc.setChar(0,1,'E', false);
lc.setChar(0,7,'S', false);
}
else {
Serial.println("connection failed");
lc.setChar(0,7,'F', false);
lc.setChar(0,4,'A', false);
lc.setDigit(0,5,1, false);
lc.setChar(0,6,'L', false);
delay(10000);
}
}
void Subscribe(){
client.println("Arn.Inicio:230"); //ALtitude dial MCP
}
void loop(){
while (counter < 11) {
ReadEthernet();
}
if (StringAnswer.charAt(10) != 9) {
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
LedLightup();
}
if (StringAnswer.charAt(10) == 9) {
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
ReadEthernet();
sevenSegment();
}
}
void ReadEthernet() {
i = client.read();
StringAnswer += i;
counter ++;
}
void LedLightup(){
char hundreds = StringAnswer.charAt(10);
char tens = StringAnswer.charAt(11);
char ones = StringAnswer.charAt(12);
String StringNumber ;
StringNumber += hundreds;
StringNumber += tens;
StringNumber += ones;
if (StringAnswer.charAt(14) = 0) {
int LedOnOff = 0;
}
if (StringAnswer.charAt(14) != 0) {
int LedOnOff = 1;
}
StringAnswer = "";
counter = 0;
}
void sevenSegment() {
char one = StringAnswer.charAt(14);
char two = StringAnswer.charAt(15);
char three = StringAnswer.charAt(16);
char four = StringAnswer.charAt(17);
char five = StringAnswer.charAt(18);
if (StringAnswer.charAt(11) == 0) {
if (StringAnswer.charAt(12) == 1) {
lc.setChar(0,7,one,false);
lc.setChar(0,4,two,false);
lc.setChar(0,5,three,false);
lc.setChar(0,6,four,false);
lc.setChar(0,2,five,false);
StringAnswer = "";
counter = 0;
}
}
}
Sonntag, 13. November 2011
7 Segment Anzeigen erste Impressionen
Video mit erster Inbetriebnahme der 7 Segmentanzeigen im MCP mit einem AS1106 und ARDUINO
Looks good!
http://www.youtube.com/user/x737cockpit
Marc
Looks good!
http://www.youtube.com/user/x737cockpit
Marc
Samstag, 5. November 2011
Donnerstag, 3. November 2011
Sonntag, 30. Oktober 2011
Opencockpits
Schlussendlich habe ich mich für die Panels von Opencockpits entschieden. Top Qualität top Preis! Jetzt habe ich die Panels und Annunciators für: MCP,EFIS,Du 45°, Autobrake Panel 45°, Clock, Autpilot Annunciators, Lightning, Nose Wheel, Light Test und natürlich Master Warning plus Sixpack. Alles schön verpackt und nur ein Knopf fehlt, den ich wahrscheinlich bei meiner nächsten Lieferung mitgeschickt bekomme.
Bin sehr zufrieden damit und schon dabei das MCP zusammenzusetzen. Die 7 Segment Anzeigen funktionieren so weit. Habe eine Probeschaltung auf einer Lochrasterplatine aufgebaut.
Hier einige Impressionen:
(das erste Foto zeigt einen bereits zusammengeklebten und bemalten Knopf fürs MCP)
Dienstag, 13. September 2011
Arduino to IOCP client
Der folgende Code ist frei verfügbar und gerne zum Wiederverwenden und Modifizieren zu verwenden, nur ein Hinweis auf mich muss erhalten bleiben. Ich konnte ihn noch nicht testen und weiß nicht obs funktioniert und der Anschluss zu den LEDS ist auch noch nicht wirklich implementiert. Ich übernehme keine Haftung für etwaige Schäden.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
192,168,0,219 };
byte server[] = {
192,168,0,214 };
Client client(server, 8092);
String stringAnswer = "";
int count = 0;
int LEDNUMBER;
int ONOFF;
int length;
void setup() {
// start the Ethernet connection:
Ethernet.begin(mac, ip);
// start the serial library:
Serial.begin(9600);
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect()) {
Serial.println("connected");
}
else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
client.println("Arn.Inicio:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227");
//subscribe
}
void loop(char c)
{
if (client.available()) {
c = client.read();
stringAnswer += c;
count++;
if (count == 11)
{
if (c == '=')
{
length = 13;
}
}
if (count == 12)
{
if (c == '=')
{
length = 14;
}
}
if (count == 13)
{
if (c == '=')
{
length = 15;
}
}
if(count == 13)
{
if (length = 13)
{
Serial.print(stringAnswer);
Serial.println();
LEDNUMBER = stringAnswer.charAt(10);
ONOFF = stringAnswer.charAt(12);
Serial.println();
Serial.print(LEDNUMBER);
Serial.println();
Serial.print(ONOFF);
/* include only when LEDS connected (change PINNUMBER etc... but basically this should work
if (ONOFF == 1)
{
digitalWrite(LEDNUMBER, HIGH);
}
if (ONOFF == 0)
{
digitalWrite(LEDNUMBER, LOW);
}
*/
stringAnswer = "";
count = 0;
LEDNUMBER = 0;
ONOFF = 0;
}
}
if(count == 14)
{
if (length = 14)
{
Serial.print(stringAnswer);
Serial.println();
LEDNUMBER = stringAnswer.charAt(11);
ONOFF = stringAnswer.charAt(13);
Serial.println();
Serial.print(LEDNUMBER);
Serial.println();
Serial.print(ONOFF);
/* include only when LEDS connected (change PINNUMBER etc... but basically this should work
if (ONOFF == 1)
{
digitalWrite(LEDNUMBER, HIGH);
}
if (ONOFF == 0)
{
digitalWrite(LEDNUMBER, LOW);
}
*/
stringAnswer = "";
count = 0;
LEDNUMBER = 0;
ONOFF = 0;
}
}
if(count == 15)
{
if (length = 15)
{
Serial.print(stringAnswer);
Serial.println();
LEDNUMBER = stringAnswer.charAt(12);
ONOFF = stringAnswer.charAt(14);
Serial.println();
Serial.print(LEDNUMBER);
Serial.println();
Serial.print(ONOFF);
/* include only when LEDS connected (change PINNUMBER etc... but basically this should work
if (ONOFF == 1)
{
digitalWrite(LEDNUMBER, HIGH);
}
if (ONOFF == 0)
{
digitalWrite(LEDNUMBER, LOW);
}
*/
stringAnswer = "";
count = 0;
LEDNUMBER = 0;
ONOFF = 0;
}
}
}
// as long as there are bytes in the serial queue,
// read them and send them out the socket if it's open:
while (Serial.available() > 0) {
char inChar = Serial.read();
if (client.connected()) {
client.print(inChar);
}
}
}
Sonntag, 11. September 2011
Ruhezeit
Die nächste Zeit wird weniger am Flugsimulator gebaut. Da ab jetzt Schule oberste Priorität hat wird sich wahrscheinlich nicht viel ändern.
Die Sommerferien waren ziemlich erfolgreich, wie gesagt wurde der Arduino fertig(schaut unter x737cockpit auf youtube nach, die Seitenwand wurde fertig , das Standbygauge Panel sieht richtig richtig gut aus und hat einen Drehknopf für das Altimeter setting, die Dachkonstruktion rund um das Overheadpanel ist angefangen.
Leider wurden die Panels nicht angefangen....
Marc
Sonntag, 31. Juli 2011
Die Erwartungen wurden übertroffen - wieder einmal !
Donnerstag, 7. Juli 2011
7.7.11
Noch ein Tag Schule und so siehts zur Zeit aus: (nur dank meinem tollen Opa, der die Seitenwand nach mehrstündiger gemeinsamer Planerei, Messerei, Zeichnerei und Modellierung selber fertig gestellt hat während ich auf Schulreise war :) )
Ich denke mal, dass ich im Sommer zu einem Punkt komme, wo wieder Land in Sicht ist :) Vielleicht wird sogar die grobe Schreinerarbeit beendet sein.
Mein Arduino Ethernet Shield mit dem w5100 chip ist angekommen. Nun ist endlich eine zwar etwas teurere aber wesentlich einfachere Kommunikationsmöglichkeit zwischen Hauptrechner und Arduino gewährleistet, und nachdem ich mir dadurch einen USB PORT und überhaupt die ganze "pseudo" serielle ...... spare kann ich nun auf den UIPCX/IOCP Server direkt zugreifen. Sobald das Programm stable ist veröffentliche ich es.
Nun ist auch die richtige Farbe da: 2,5 LIter RAL7011 und RAL 7035/38 als Sprühfarbe. Damit wird das MIP und co bemalt und dann auch die weißen Acrylglasplatten für die Panels. Die feinen Linien auf den 7035/38er Overheadpanels werden per Hand aufgemalt.
Schlussendlich ist mir noch etwas Geniales gelungen. Ein alter CD-PLayer wurde umfunktioniert in eine automatische Flugzeugansage auf Englisch von DELTA. Die Datei habe ich von Youtube. (http://www.youtube.com/watch?v=OYG9wPfgq3I) Ich habe den PLAY Button (der einzige den man braucht zum aktivieren, da, wenn der Player angesteckt ist, er auf Standby ist) umgangen indem ich ganz einfach zwei Kabel angelötet habe. Sobald nun das Flugzeug vom Gate wegrollt wird vom Arduino automatisch die Ansage durch zwei kleine Lautsprecher, welche hinten versteckt sind, abgespielt. Arduino lebe hoch!!!
Ich bin gespannt, was sich im Sommer alles tut, die Panels sollten fertig werden, der Arduino.... ich versuche euch so oft wie möglich zu informieren wenn es etwas Neues gibt.
Marc
Ich denke mal, dass ich im Sommer zu einem Punkt komme, wo wieder Land in Sicht ist :) Vielleicht wird sogar die grobe Schreinerarbeit beendet sein.
Mein Arduino Ethernet Shield mit dem w5100 chip ist angekommen. Nun ist endlich eine zwar etwas teurere aber wesentlich einfachere Kommunikationsmöglichkeit zwischen Hauptrechner und Arduino gewährleistet, und nachdem ich mir dadurch einen USB PORT und überhaupt die ganze "pseudo" serielle ...... spare kann ich nun auf den UIPCX/IOCP Server direkt zugreifen. Sobald das Programm stable ist veröffentliche ich es.
Nun ist auch die richtige Farbe da: 2,5 LIter RAL7011 und RAL 7035/38 als Sprühfarbe. Damit wird das MIP und co bemalt und dann auch die weißen Acrylglasplatten für die Panels. Die feinen Linien auf den 7035/38er Overheadpanels werden per Hand aufgemalt.
Schlussendlich ist mir noch etwas Geniales gelungen. Ein alter CD-PLayer wurde umfunktioniert in eine automatische Flugzeugansage auf Englisch von DELTA. Die Datei habe ich von Youtube. (http://www.youtube.com/watch?v=OYG9wPfgq3I) Ich habe den PLAY Button (der einzige den man braucht zum aktivieren, da, wenn der Player angesteckt ist, er auf Standby ist) umgangen indem ich ganz einfach zwei Kabel angelötet habe. Sobald nun das Flugzeug vom Gate wegrollt wird vom Arduino automatisch die Ansage durch zwei kleine Lautsprecher, welche hinten versteckt sind, abgespielt. Arduino lebe hoch!!!
Ich bin gespannt, was sich im Sommer alles tut, die Panels sollten fertig werden, der Arduino.... ich versuche euch so oft wie möglich zu informieren wenn es etwas Neues gibt.
Marc
Abonnieren
Posts (Atom)