0 Members and 1 Guest are viewing this topic.
byte dataPin=2;byte latchPin=3;byte clockPin=4;byte data=255;byte byte1;void setup() { pinMode (dataPin,OUTPUT); pinMode (latchPin,OUTPUT); pinMode (clockPin,OUTPUT); Serial.begin(9600); } void loop(){ if (Serial.available()>0) { byte1=Serial.read(); digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, byte1); digitalWrite(latchPin, HIGH); } delay(150);}
note = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})rs232=require("luars232")local port_name="COM4"local e,p=rs232.open(port_name)if e ~= rs232.RS232_ERR_NOERROR then term.out('',string.format("can't open serial port '%s', error: '%s'\n", port_name, rs232.error_tostring(e))) returnend-- set port settingsassert(p:set_baud_rate(rs232.RS232_BAUD_9600) == rs232.RS232_ERR_NOERROR)assert(p:set_data_bits(rs232.RS232_DATA_8) == rs232.RS232_ERR_NOERROR)assert(p:set_parity(rs232.RS232_PARITY_NONE) == rs232.RS232_ERR_NOERROR)assert(p:set_stop_bits(rs232.RS232_STOP_1) == rs232.RS232_ERR_NOERROR)assert(p:set_flow_control(rs232.RS232_FLOW_OFF) == rs232.RS232_ERR_NOERROR)byte1='U'err, len_written = p:write(string.char(byte1)) endnote:set_text('Longueur écrite='..len_written)proc.wait_sysdt(1)assert(p:close() == rs232.RS232_ERR_NOERROR)-- this closes the COMnote:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
function send_data(n1,n2) e,p=rs232.open(port_name) if e ~= rs232.RS232_ERR_NOERROR then term.out('',string.format("can't open serial port '%s', error: '%s'\n", port_name, rs232.error_tostring(e))) return end -- set port settings assert(p:set_baud_rate(rs232.RS232_BAUD_9600) == rs232.RS232_ERR_NOERROR) assert(p:set_data_bits(rs232.RS232_DATA_8) == rs232.RS232_ERR_NOERROR) assert(p:set_parity(rs232.RS232_PARITY_NONE) == rs232.RS232_ERR_NOERROR) assert(p:set_stop_bits(rs232.RS232_STOP_1) == rs232.RS232_ERR_NOERROR) assert(p:set_flow_control(rs232.RS232_FLOW_OFF) == rs232.RS232_ERR_NOERROR) err, len_written = p:write(string.char(n2)..string.char(n1)) assert(p:close() == rs232.RS232_ERR_NOERROR)-- this closes the COMendnote = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})intro = "Machmètre sur 2 displays 7 segments"note:set_text(intro)proc.wait_sysdt(1.0)v=vessel.get_interface('XR2-01')rs232=require("luars232")port_name="COM4"repeat alt=oapi.get_altitude() mach = v:get_machnumber() mach_display=math.floor(10*mach) centaine=math.floor(mach_display/100) mach_display=mach_display-100*centaine dizaine=math.floor(mach_display/10) mach_display=mach_display-10*dizaine unite=mach_display char1=unite+16*dizaine char2=centaine note:set_text(char2.." "..char1.." "..centaine..dizaine..unite) if unite~=old_unite then send_data(char1, char2) old_unite=unite end proc.skip()until alt>300000 -- sortie dès qu'on atteint 300 kms d'altitudenote:set_text('Longueur écrite='..len_written)proc.wait_sysdt(1)note:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
int dataPin=2;int latchPin=3;int clockPin=4;int data=255;byte octet1;byte octet2;void setup() { pinMode (dataPin,OUTPUT); pinMode (latchPin,OUTPUT); pinMode (clockPin,OUTPUT); Serial.begin(9600); } void loop(){ if (Serial.available()>0) { octet1=Serial.read(); octet2=Serial.read(); digitalWrite(latchPin,LOW); shiftOut(dataPin, clockPin, LSBFIRST, octet1); shiftOut(dataPin, clockPin, LSBFIRST, octet2); digitalWrite(latchPin, HIGH); } delay(150);}
function widdernixopen() e,p=rs232.open(port_name) if e ~= rs232.RS232_ERR_NOERROR then note:set_text('Problème...') proc.wait_sysdt(1.41) return end -- set port settings assert(p:set_baud_rate(rs232.RS232_BAUD_9600) == rs232.RS232_ERR_NOERROR) assert(p:set_data_bits(rs232.RS232_DATA_8) == rs232.RS232_ERR_NOERROR) assert(p:set_parity(rs232.RS232_PARITY_NONE) == rs232.RS232_ERR_NOERROR) assert(p:set_stop_bits(rs232.RS232_STOP_1) == rs232.RS232_ERR_NOERROR) assert(p:set_flow_control(rs232.RS232_FLOW_OFF) == rs232.RS232_ERR_NOERROR)end
function widdernixclose() assert(p:close() == rs232.RS232_ERR_NOERROR)-- this closes the COMend
function init_data(data,start,width) for i=start,width do high_byte=math.floor(data[i]/256) low_byte=data[i]-high_byte*256 err,len_written=p:write(string.char(high_byte)..string.char(low_byte)) end end
function init_status() --envoi sur deux octets de la valeur SIPOstatus contenant l'état des 12 switches APU (dont l'APU lui même) high_byte=math.floor(SIPOstatus/256) low_byte=SIPOstatus-high_byte*256 err, len_written = p:write(string.char(high_byte)..string.char(low_byte)) --envoi sur deux octets de la valeur SIPOtransit_status contenant l'état de position des 12 auxiliaires APU high_byte=math.floor(SIPOtransit_status/256) low_byte=SIPOtransit_status-high_byte*256 err, len_written = p:write(string.char(high_byte)..string.char(low_byte)) --envoi sur deux octets de la valeur Miscstatus contenant l'état logique des RCS (OFF/ROT/LIN), ainsi que l'état Docké ou non du XR2. Il reste encore 13 bits dispos dans cette valeur high_byte=math.floor(Miscstatus/256) low_byte=Miscstatus-high_byte*256 err, len_written = p:write(string.char(high_byte)..string.char(low_byte)) end
for (byte i=3;i<19;i++) {//réception des données envoyées par Orbiter/Lua-----2*16=32 octets-------- data=get_data(data); Pos[i]=data; }
//réception des données envoyées par Orbiter/Lua-----2 octets+les 32 déjà extraits---34 octets data=get_data(data); Switch_status=data; //réception des données envoyées par Orbiter/Lua-----2 octets+les 34 déjà extraits---36 octets data=get_data(data); Transit_status=data; //réception des données envoyées par Orbiter/Lua-----2 octets+les 36 déjà extraits---38 octets data=get_data(data); Miscstatus=data;
unsigned get_data(unsigned int value) { // réception des deux octets: byte high_byte=Serial.read(); byte low_byte=Serial.read(); //reconstitution de la valeur sur 2 octets value=256*high_byte+low_byte; return value; }//fin get_data()
function copythat() read_len=1 err, data_read, size=p:read(read_len)end
Voilà, voilà, j'espère que vous n'êtes pas trop J'ai essayé de faire léger!!
Bon courage pour la suite!
...quand on arrive à faire "tourner" des solutions qui après coup peuvent sembler à certains évidentes, mais qui imposent au concepteur des heures de recherche.
Merci, les gars. Ça fait plaisir d'avoir du retour. Je vois aussi le compteur des vues qui tourne, donc il y a du monde qui vient voir, même s'il ne dit rien.