Conversione codice Visual Basic in codice C per Arduino

di il
3 risposte

Conversione codice Visual Basic in codice C per Arduino

Ciao a tutti.

Ho dei file generati da un software (http://www.lynxmotion.com/p-443-lynx...er-seq-01.asp) per essere caricati in un microcontrollore BasicAtom, formato (.bas e .bs2 e .cvs).

Volevo sapere è possibile adattare il codice di questi file in un codice di Arduino?

Il mio scopo e usare Arduino come microcontrollore(per me piu facile da programmare) per eseguire una serie di sequenze per muovere un robot, per evitare di scrivere tutti i movimenti che ne sono tantissimi volevo usare il file generati dal software.

Esiste qualche Software per fare la conversione del codice che si trova all'interno dei file con estensione .bas o .bs2 in un codice che posso caricare nel microcontrollore di Arduino?

Se qualcuno potrebbe darmi una delucitazione, se magari sto cercando di fare qualcosa impossibile da realizzare..non so..accetto consigli...

Questo e il codice che mi genera il software:
; ------------------------------------------------------
; Lynxmotion Visual Sequencer SSC-32 'Export' Program
; Sequencer SSC-32 project : Robot
; Date : 10/07/2015 20:15:41
; ------------------------------------------------------
; Format : Basic Atom 24/28 IDE <= V02.2.1.1 or Pro IDE + SSC-32
; Original filename : Robot.bas
; Communication with SSC-32 : BotBoard V1 => Pin 15
; ------------------------------------------------------

Steps Wordtable	$04EA, $0C1D, $146D, $1B70, $2529, $8243, $8B48, $9305, $9BA5, $A292, $A00C, $A00C, |
				$8FD0, $97D0, $9800, $980C, $980C

SeqPos Wordtable	$0000, |
					$0011

SSC32   con p15

SeqIndex var Word
Index var Word
LastServo var Byte
TmpServo var Byte
TmpValue var Word
DejaVu var bit

LastServo = 99
DejaVu = 0

pause 500

Main
	For SeqIndex = 0 to 0
		For Index = SeqPos(SeqIndex) to SeqPos(SeqIndex + 1) - 1
			TmpServo = Steps(Index) >> 11
			TmpValue = Steps(Index) & 2047
			if LastServo = TmpServo then
				TmpValue = TmpValue << 5
				if DejaVu then
					Pause TmpValue
					LastServo = 99
				else
					serout SSC32,i38400,["T", DEC TmpValue, 13]
					DejaVu = DejaVu ^ 1
				endif
			else
				TmpValue = TmpValue + 500
				serout SSC32,i38400,["#", DEC TmpServo, "P", DEC TmpValue]
				DejaVu = 0
				LastServo = TmpServo
			endif
		next
	next
	goto Main
Questa e la scheda controllo servo SSC-32(http://www.lynxmotion.com/p-395-ssc-...ontroller.asp)

grazie ciao

3 Risposte

  • Re: Conversione codice Visual Basic in codice C per Arduino

    Tanto per cominciare il Visual Basic non c'entra nulla ... Non c'è codice VB ma codice Basic specifico per un microcontrollore.

    Comunque non c'è nulla per questa specifica esigenza, dovrai studiare il codice Basic e riscriverlo per Arduino. Se non sai farlo dovrai incaricare qualcuno.
  • Re: Conversione codice Visual Basic in codice C per Arduino

    Grazie mille Erogon era quello che sospettavo.
    Il codice Basic non fa altro che eseguire una serie di steep e di sequenze a far si che il robot esegue i movimenti, che io riesco a fare anche con Arduino però capisci bene che se devo far spostare 10 servocomandi insieme per una decina di steep e un paio di sequenzeper fare un solo movimento puoi immagginare quante riche di arduino devo scrivere, il mio pensiero era usare il codice basic per trovarmi tutto gia scritto almeno i valori delle posizioni dei servo che sono quelli per me piu importanti.

    Cmq grazie per l'aiuto adesso proverò a studiare qualche altra strada.

    Ciao grazie
  • Re: Conversione codice Visual Basic in codice C per Arduino

    
    Servo ser[10];
    byte step[100][10];
    unsigned countstep = 0;
    
    void setstep(byte s0, byte s2, etc...)
    {
        step[countstep][0]=s0;
        step[countstep][1]=s1;
        etc...
        ++countstep;
    }
    
    void execstep(byte id)
    {
        byte i;
        while( i = 0; i < 10; ++i)
            servo[i].write(step[id][i]);
    }
    
    void setup()
    {
        ...
        setstep (100,100.....);
        setstep(10,50,40.....);
      ...
    }
    
    byte st=0;
    void loop ()
    {
            if (st < countstep)
                execstep(st++);
    }
    
    così era troppo complesso?
Devi accedere o registrarti per scrivere nel forum
3 risposte