0 Members and 1 Guest are viewing this topic.
Term.out(oapi.get_altitude())
v=vessel.get_focusinterface()
term.out(v :get_rcsmode())
BEGIN ENVIRONMENT System Sol Date MJD Script Demos/AtmautopilotEND ENVIRONMENT
Data.path='Script/Challenges/Challenge1.dat'max_score=10slist=hscore_read(data_path, max_score)function hscore_read(file, n) local slist={} local f=io.open(file, "r") if f~=nil then for i=1, n do local t=f:read() if t==nil then break end local name, fuel _,_,name, fuel=string.find(t, "(._):(.+)")slist[i]={name, to number(fuel)} end f:close() end return slist end
-- ******************************************-- ********read number lines from scn file***-- ******************************************function line_read (file) number_lines=0 local g = io.open(file,"r") if g ~= nil then repeat t = g:read() number_lines=number_lines+1 until t == nil g:close() endend-- *****************************************-- *********end function line_read *********-- *****************************************
-- *******************************************-- ********load lines from scn file***********-- *******************************************function load_scnfile (file,n) slist={} local f = io.open(file,"r") if f ~= nil then for i=1,n do t = f:read() if t == nil then break end slist[i]=t end f:close() end return slistend-- ******************************************-- *********end function load_scnfile *******-- ******************************************
-- *******************************************-- ***********load ship status****************-- *******************************************function load_xr2_status (pattern) for i=1,number_lines-1 do s1 = slist[i] _,_,name,classname = string.find (s1, "(.-):(.+)") if (classname=='XR2Ravenstar') and (ship=='XR2Ravenstar') then name_ship=name for j=i, number_lines-1 do if string.match (slist[j], 'NOSECONE')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") note:set_text('NOSECONE=>'..status..' '..level) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'GEAR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") note:set_text('GEAR=>'..status..' '..level) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'RADIATOR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") note:set_text('RADIATOR=>'..status..' '..level) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'HATCH')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") note:set_text('HATCH=>'..status..' '..level) elseif slist[j]=='END' then flag_out=1 break end end
--****************************************************************************-- ********** begin program ************************* begin program *********--*****************************************************************************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})data_path = 'Scenarios/(Current state).scn'intro = 'Load scn data'note:set_text(intro)proc.wait_sysdt(0.5)note:set_colour ({r=0.9,g=0.0,b=0.0})v=vessel.get_focusinterface()ship=v:get_classname()name_ship_focused=v:get_name() -- ******************************************************-- ***********begin call functions for scn file**********-- ******************************************************sfirst = line_read (data_path)slist = load_file (data_path,number_lines)if ship=='XR2Ravenstar' then lstatus = load_xr2_status (ship)elseif ship=='Xr5Vanguard' then note:set_text('Toward function loop load of XR5Vanguard') proc.wait_sysdt(2.01)elseif ship=='ShuttleA' then note:set_text('Toward function loop load of ShuttleA') proc.wait_sysdt(2.01)else note:set_text('vessel not implemented, simpit not activated') proc.wait_sysdt(2.01)end-- ******************************************************-- ************ end call functions for scn file**********-- ******************************************************note:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
#include <HIDKeyboard.h> // Inclut la librairie HIDKeyboard au programmeHIDKeyboard keyboard; // Initialise la librairieint Buttonpin = 7; //Le bouton est branche sur la pin 7int ButtonState = 0; //L'etat du bouton: ON (HIGH) ou OFF (HIGH). On lui donne pour le moment la valeur 0int PreviousButtonState = 0; //Le precedent etat du boutonvoid setup(){ pinMode(Buttonpin, INPUT); //On initialise la pin 7 comme une entree keyboard.begin(); // Commence la communication delay(2000); // Attend que le peripherique soit reconnue comme un clavier}void loop(){ ButtonState = digitalRead(Buttonpin); //On lit l'etat de la pin 7 et on le stocke dans la variable ButtonState if (ButtonState != PreviousButtonState) //On compare les deux états. Si ils différents, la condition est validée et on écrit la lettre A { PreviousButtonState = ButtonState; //On enregistre le nouvel état du bouton dans la variable PreviousButtonState pour //la prochaine boucle. keyboard.pressKey('g'); delay(100); keyboard.releaseKey(); delay(50); }}
void setup(){ pinMode(Buttonpin, INPUT_PULLUP); //On initialise la pin 7 comme une entree keyboard.begin(); // Commence la communication delay(2000); // Attend que le peripherique soit reconnue comme un clavier}
const int dataPin_out=2; const int latchPin_out=3; const int clockPin_out=4;int byte1=0;void setup(){pinMode(dataPin_out, OUTPUT);pinMode(latchPin_out, OUTPUT);pinMode(clockPin_out, OUTPUT);Serial.begin(9600);}void loop(){byte1=byte1+1;shiftOut(dataPin_out,clockPin_out,LSBFIRST,byte1);delay(1000);if byte1=255{ Byte1=0;}}
// Fonction de remplissage des registres void updateRegister(unsigned int SIPOled[]) { digitalWrite(latchPin_out, LOW); //déverrouillage des registres unsigned int value; //déclaration mémoire tampon pour scrutation SIPOreg[] for (byte Ii=0;Ii<NumberSIPOreg;Ii++)// traitement du nombre de registres divisé par 2: { // on marche en 16 bits sur des registres à 8 bits value=SIPOled[Ii]; for (byte j=0;j<16;j++) // scrutation des 16 bits de chaque élément de SIPOled[] { digitalWrite(clockPin_out, HIGH); un coup d'horloge digitalWrite(dataPin_out, ((value&32768)==32768)); //détermination et écriture de DATA à 0 ou 1 sur pin 2 de la UNO digitalWrite(clockPin_out, LOW); fin du coup d'horloge value=value<<1;// décalage des bits }// fin de la boucle for j }//fin de la boucle for Ii digitalWrite(clockPin_out, HIGH); //ce coup d'horloge a été rajouté pour arriver à caler les bits digitalWrite(clockPin_out, LOW);// dans les registres. Je ne sais pas pourquoi c'est indispensable // mais ça marche comme ça digitalWrite(latchPin_out, HIGH);// verrouillage des registres }//fin remplissage des registres
// Fonction de remplissage des registresvoid updateRegister(unsigned int SIPOled[], byte numSIPOreg){ // Déverouillage des registres digitalWrite(latchPin_out, LOW); // On s'assure que l'horloge est dans un état connu digitalWrite(clockPin_out, LOW); // On parcourt chaque bloc de 16 bits for (byte i = 0; i < numSIPOreg; ++i) { unsigned int value = SIPOled[i]; // On parcourt chaque bit for (byte j = 0; j < 16; ++j) { // Écriture de la valeur. unsigned int mask = 0x8000 >> j; digitalWrite(dataPin_out, value & mask) // Un coup d'horloge digitalWrite(clockPin_out, HIGH); digitalWrite(clockPin_out, LOW); } } // Verrouillage des registres digitalWrite(latchPin_out, HIGH);}
Je me demande si un code à base de bitwise est plus efficace en temps machine qu'un code sans bitwise. Je serais enclin à penser que oui....
const int dataPin_out=2;const byte latchPin_out=3; const byte clockPin_out=4;const byte dataPin_in=5;const byte latchPin_in=6;const byte clockPin_in=7;byte value;void setup(){pinMode(dataPin_out, OUTPUT);pinMode(latchPin_out, OUTPUT);pinMode(clockPin_out, OUTPUT);pinMode(dataPin_in, INPUT);pinMode(latchPin_in, OUTPUT);pinMode(clockPin_in, OUTPUT);Serial.begin(9600);}void loop(){digitalWrite(latchPin, HIGH);delayMicrosecond(10);digitalWrite(latchPin, LOW);value=shiftIn(dataPin,clockPin);shiftOut(dataPin_out,clockPin_out,LSBFIRST,value);delay(10);}
// Fonction de lecture des registres PISO (switches et boutons poussoir) void get_PISO_register() { //latch à LOW pour lire l'état des switches, et on attend 10 microsecondes digitalWrite(latchPin_in,LOW); delayMicroseconds(10); //latch à HIGH, verrouillage digitalWrite(latchPin_in,HIGH); for (unsigned int i=0;i<Data_width+1;++i){ //data_width est le nombre de bits à lire (multiple de 8) //on "pousse" Data_width fois les valeurs lues dans la mémoire switchStatus; c'est le shiftIn unsigned int switchStatus=(switchStatus<<1)|(digitalRead(dataPin_in)); //un coup d'horloge digitalWrite(clockPin_in,HIGH); delayMicroseconds(10); digitalWrite(clockPin_in,LOW); delayMicroseconds(10); //j est un modulo 16 de i, afin de cadencer le remplissage du tableau PISOreg[] byte j=i%16; if ((i>0)&&(j==15)){ // envoi de la valeur dans le tableau PISOreg[] PISOreg[i/16]=switchStatus; }//Endif } //Next i }// fin lecture des registres PISO