[BAS] Ein kleines FreeBasic Tutorial

  • Hallo
    wer wie ich auf einem 386er unter DOS das programmieren mit QBasic für sich entdeckt hat, wird mir warscheinlich zustimmen wenn ich behaupte das Basic an und für sich eigentlich keine schlechte Programmiersprache war/ist, insbesondere wenn es um die RaspberryPI Entwicklung geht. Viele kleinere Projekte könnten warscheinlich mühelos in Basic umgesetzt werden. Nun gibt es ein kleines Entwicklerteam welches es sich zur aufgabe gemacht hat, FreeeBasic auf ARM6/7 zu porten. Die aktuellste version funktioniert soweit ich bisher getestet habe sehr gut. Wie aber nun greife ich z.B. auf die GPIO's zu? Ganz einfach! Dazu verwendet man einfach wiringPi welches, dank der Art und Weise wie FBC funktioniert und arbeitet, sich reibungslos einbinden lässt!


    Aber nun genug der warmen Worte. Ich gehe in diesem Tutorial von einem Rev. 2 RPi aus der Raspbian installiert hat, da das wohl die gängiste "Anfänger" kombination ist.


    Zu allererst sollten wir uns eine Kopie des FBC für ARM6 besorgen. Zu finden in diesem Post:
    http://www.freebasic.net/forum/viewtopic.php?f=17&t=21312&start=60#p189339


    Hotlink: fbc-pi-debian.tar.gz


    Loggen wir uns also in unseren Pi ein (per SSH) und laden die datei via


    Code
    wget http://www.alice-dsl.net/d.j.peters/fbarm/fbc-pi-debian.tar.gz



    herunter und entpacken sie über folgendes Kommando

    Code
    tar -xvfz fbc-pi-debian.tar.gz


    danach wechseln wir in das FBC verzeichnis:

    Code
    cd gbc-pi-debian


    und installieren es

    Code
    sh ./install.sh -i


    Nun sollte FBC installiert sein. Testen kann man dies indem man einfach "fbc" eintippt und schaut ob was passiert :)


    Um wiringPi zu Installieren folgt ihr einfach der Anleitung auf folgender Seite (Englisch)
    http://wiringpi.com/download-and-install/


    Wenn ihr das geschafft habt steht eigentlich auch schon das Grundsystem um den Pi und die GPIOs mit Basic zu nutzen.


    Hallo Welt
    Natürlich möchten wir auch Testen ob alles funktioniert!


    Wir erstellen uns also unsere "Blink.bas" (am besten in einem sepraten Verzeichnis)


    Wenn wir nun versuchen unser kleines Programm mit

    Code
    fbc Blink.bas


    zu kompilieren erhalten wir erstmal einen Fehler, wiringPi.bi wird vermisst.
    entweder man nutzt nun "Swig" um sich den C Header für FreeBasic nutzbar zu machen oder man erstellt einfach die Datei "wiringPi.bi" und fügt folgenden Inhalt ein.


    MODE_INPUT bzw MODE_OUTPUT heissen im Ursprung nur INPUT bzw OUTPUT da das nun aber reservierte schlüsselwörter für FBC sind hab ich das abgeändert.


    Nun haben wir unseren Header aber es fehlen noch unsere Objekt Dateien (*.o) diese finden wir im verzeichnis "wiringPi/wiringPi/".


    nun haben wir 2 Möglichkeiten. Entweder wir kopieren die "wiringPi.o" und "piHiPri.o" in unser Testverzeichnis und nutzen folgenes Kommand zum kompilieren


    Code
    fbc Blink.bas *.o


    oder wir erstellen uns ein MAKEFILE indem wir alles regeln können. Da ich aber nunmal aus der VisualBasic und CO Ecke komme.... Bin ich kein Makefiler :)



    Wenn alles ordnungsmässig kompiliert wurde können wir nun eine LED am GPIO 17 zum blinken bringen.

    Code
    ./Blink


    Beenden könnt ihr das ganze per ESC oder Strg+C



    Für Fragen und Anregungen stehe ich gerne zu verfügung. Dieses Tutorial gilt noch als "WIP" also bitte nicht auf jedem Fehler herumreiten :)


    Ansonten viel Spass beim basteln
    [hr]
    Platzhalter

    BASIC für den PI -> Tutorial

    Edited once, last by Turael ().


  • Ich kenn nur das Original BASIC


    10 PRINT "Hallo Welt"


    Nunja.... etwas fortschrittlicher war qbasic dann schon ;) ... das bsp da oben war auf meinem komischen lerncomputer^^ und naja gwbasic
    ich finde es einsteigerfreundlicher als C und da der fbc compiler ja quasi den basic code nach c portiert und dann mit gcc kompiliert kann ich damit leben ;D

    BASIC für den PI -> Tutorial

    Edited once, last by ruohki ().

  • Hallo,


    hat jemand das blink.bas Programm schon mal getestet? Ich kriege nur Fehlermeldungen:


    fbc -w all "blink.bas" (im Verzeichnis: /home/pi)
    blink.bas(4) error 41: Variable not declared, wiringPiSetup in 'if wiringPiSetup = -1 then'
    blink.bas(9) error 41: Variable not declared, pinMode in 'pinMode(0, MODE_OUTPUT)'
    Kompilierung fehlgeschlagen.


    hier der Programm code


    #include "/home/pi/fbc-0.91.0-pi-debian/include/freebasic/wiringPi.bi"


    'WiringPi initialisieren (oder eben auch nicht)
    if wiringPiSetup = -1 then
    END
    end if


    'GPIO 17 (für wPi 0) auf Ausgang stellen
    pinMode(0, MODE_OUTPUT)


    'LED Blinken lassen
    do until inkey = chr(27)
    digitalWrite(0, 1)
    sleep(500)
    digitalWrite(0, 0)
    sleep(500)
    loop


    Vielen Dank Klaus

  • Hast du wiringPi installiert?


    Wenn ja Versuch mal:
    fbc Blink.bas -l wiringPi


    Du hast bestimmt die object files nicht ins verzeuchnis deines sourcecodes gepackt :)

    BASIC für den PI -> Tutorial

    Edited once, last by ruohki ().

  • Hallo,


    vielen Dank für die schnelle Antwort! Ja habe ich installiert in /home/pi/, mit "gpio readall" im LTX-Terminal zeigt er auch eine Liste an.


    Klaus

  • Gut, ich hoffe er kompiliert nun ohne Fehler :) wenn du mal mit der LCD lib von wiringPi arbeitetest musst du -l wiringPiDev dazu linken, also noch zusätzlich zu wiringPi

  • Sorry, nein selben Fehlermeldungen mit:
    Wenn ja Versuch mal:
    fbc Blink.bas -l wiringPi
    Ich muss dazu sagen, linux ist neu für mich. Bei Deinem Tutorial war mir nicht klar wo was gespeichert werden muss/soll.

  • Hallo
    Ich bin etwas spät. aber vielleicht kann mir doch jemand helfen.
    Ich hab alles genau nach der Anleitung durchgeführt; waren auch keine besonderen Meldungen erschienen bis ich zum Schluss die Blink.bas compilieren wollte. Da kommt immer der Fehler : Unbekannte Option >>--32<<. Kann man sich das erklären? Es muss mit dem FBC zusammenhängen. Aber was kann ich tun? Hilfe bitte !!!

  • Hui,


    poste doch bitte mal dein script und den befehl mit dem du den compiler aufrufst... alles was helfen könnte. Die gesammte ausgabe der console wäre auch hilfreich also alles ab eingabe des compile befehls

    BASIC für den PI -> Tutorial

    Edited once, last by ruohki ().


  • Hui,


    poste doch bitte mal dein script und den befehl mit dem du den compiler aufrufst... alles was helfen könnte. Die gesammte ausgabe der console wäre auch hilfreich also alles ab eingabe des compile befehls


    hallo


    na das ging ja flott! danke dafür. also ein script gibt es da noch nicht, ich bin nur auf der konsole zugange. was ich nach deiner anltg anders gemacht habe ist 1.)statt tar -xvfz... nur tar -xvz... da sonst ein fehler kam uns 2.) statt cd gbc-pi-debian bin ich nach cd fbc-pi-debian gewechselt.
    ansonsten siehe anhang, dateien sind im verzeichnis, fbc meldet sich, wiringPi arbeitet aber dann zum schluss die fehlemeldung bei Blink.bas

  • hallo


    na das ging ja flott! danke dafür. also ein script gibt es da noch nicht, ich bin nur auf der konsole zugange. was ich nach deiner anltg anders gemacht habe ist 1.)statt tar -xvfz... nur tar -xvz... da sonst ein fehler kam uns 2.) statt cd gbc-pi-debian bin ich nach cd fbc-pi-debian gewechselt.
    ansonsten siehe anhang, dateien sind im verzeichnis, fbc meldet sich, wiringPi arbeitet aber dann zum schluss die fehlemeldung bei Blink.bas


    kannst du den parameter -v mal anhängen weil das ist leider nicht so wirklich aussagekräftig


    wäre interessant ob er ein einfaches script mit nem print "hello world" compiled

    BASIC für den PI -> Tutorial

    Edited once, last by ruohki ().

  • kannst du den parameter -v mal anhängen weil das ist leider nicht so wirklich aussagekräftig


    wäre interessant ob er ein einfaches script mit nem print "hello world" compiled


    Automatisch zusammengefügt:[hr]


    hallo
    ich bin nicht ganz so fit was das handling hier im forum betrifft. ich hng jetzt einfach mal den screenshot an. so wie ich das verstehe bringt der assembleraufruf den fehler.

  • es ist ja schon einen ganze weile her dass sich hier was getan hat, aber ich habe trotzdem mal einen frage.
    ich hab also das totorial exakt genauso 'nachgebaut', wenn ich nun eine datei ,die wirigpi' nicht braucht; also"hallowelt.bas" compiliere dann funkts.
    wenn ich aber etwas mit wiringpi brauche dann bekomme ich unterschiedlichste meldungen. es fehlt immer irgendwie die wiringPi.pi. ist aber def. da.
    ich hänge einfach mal ein paar bildchen dran, wo man meine div, versuche sieht.
    vielleicht kann mir doch noch jemand helfen, wäre nett!