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. 

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;
}
}

}

Sonntag, 13. 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 !


Bring color to your life:

Was ist denn da passiert ;P

Das Standby Gauge Panel wurde rausgeschnitten und neu gemacht, da die 2 Abdeckungen sonst keinen Platz haben. Ich arbeite mit einem digitalen Artificial Horizon wie in der neuesten Variante der 737.

Die Sidewall wird fertig:



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