Programm_Rasenmäherroboter mit Raspberry/ Arduino und C-Sprache

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Mir ist noch was eingefallen fuer oliviaInit. Dafuer muessen aber die eigenen Funktionen auch einen int zurueckgeben, genau wie gpioInitialise.

  • Programm_Rasenmäherroboter mit Raspberry/ Arduino und C-Sprache? Schau mal ob du hier fündig wirst!

  • Hi Tell,

    Funktionspointer sind vielleicht ein wenig heftig für einen Einsteiger ;)

    Im switch() case der Aufrufschleife kann der switch-Wert zurückgegeben werden, damit ist genau lokalisiert, welcher setmode() oder was auch immer in die Hose gegangen ist (mach ich übrigens auch so ...).

    cu,

    -ds-

  • Ja Tell mein Wissen ist noch nicht so hoch. Vorletzte Semester habe ich Grundlagen gelernt ( if, While,Do...While, Switch case, for, arrays, strings, Funktionen. Pointer haben wir nur angeschnitten.

    dreamshader hat mir ein paar Tipps gegeben was ich nach und nach lernen soll.

    Der Plan ist/war so:

    1. lernen den Code aufzuteilen

    2. Thread für eine Ultraschall Messung implementieren ( ich werde die Funktion von pigpio testen. normale pthreads hat mir dreamshader n bisschen erklärt und habe mich belesen aber die pigpio Funktion ist vielleicht einfacher und somit komme ich mitm Projekt schneller voran)

    3. parallel lerne ich nach und nach Pointer und andere Sachen Die ich noch nicht gut kenne wie fsm, typdef Struct.

    Natürlich auch wie Linux funktionert, denn ist das erste mal dass ich im "ernst" damit Arbeite

    4. immer wieder Code optimieren aber erstmal in Rahmen meinem Verständnis entsprechend. Natürlich auch neue Sachen die ich nachvollziehen kann.

    Ich freue mich auf jeder von eure Vorschläge. Denn wenn ich es nun noch nicht verstehe, werde ich später machen und komme ich auf die Beiträge zurück.

    Ihr seid klasse

    Grüße aus Berlin,

    Golpe



  • Zitat

    Im switch() case der Aufrufschleife kann der switch-Wert zurückgegeben werden, damit ist genau lokalisiert, welcher setmode() oder was auch immer in die Hose gegangen ist (mach ich übrigens auch so ...).

    Ja. Das finde ich auch gut bei der Switch case variante. So muss ich nicht lange suchen wo im Code der Fehler liegen könnte.

    //EDIT

    Über diese typestruct belese ich mich gleich, denn ich sehe das immer benutzt wird...

    Aktuelles "to read/learn" bei mir: typendef struct und Pointer.

    Auf weitere Hausaufgaben von euch freue ich mich :)

    Die Seite Hier sieht gut aus, falls es einer interessiert...

    Grüße aus Berlin,

    Golpe



    Einmal editiert, zuletzt von Golpe (25. August 2018 um 13:17)

  • hi,

    meintest du so in der Art?

    gesamte geänderter Code folgt...

    Grüße aus Berlin,

    Golpe



  • Hi,

    ja ... so was in der Art ...

    Dran denken: die Ende-Bedingung für die Schleife im jeweiligen thread sollte da auch mit rein, damit Dein main() diese ggf. beenden kann.

    Ob Du diese Struktur jeweils für jede Art thread speziell definierst oder eine nimmst, die für alle passt ... ist jetzt erst mal Geschmackssache.


    cu,

    -ds-

  • Das ist das letzte Code-Update dieses Projektes:

    aktualler Status funktionierend?:

    nein

    olivia.h:

    olivia.c:

    main.c:

    Grüße aus Berlin,

    Golpe



    3 Mal editiert, zuletzt von Golpe (8. September 2018 um 21:37)

  • Ob Du diese Struktur jeweils für jede Art thread speziell definierst oder eine nimmst, die für alle passt ... ist jetzt erst mal Geschmackssache.

    meinst du könnte man auch eine Struktur für jede Sensor definieren? (jeder Element der Struktur wäre Sensor bezogen?)

    (die Theorie habe ich erstmal halbwegs verstanden. Ich glaube die Übung fehlt, um es ganz zu verstehen)

    Grüße aus Berlin,

    Golpe



  • Mach' das mal so, wie Du es Dir vorstellst und es umsetzen kannst.

    Es ist Dein Projekt, in dem Du auch Deine Ideen und Vorstellungen realisieren solltest ...

    Verbesserungs-Vorschläge sind eine Sache ... und ich denke, hier lesen genügend Leute mit um Dich darauf hinweisen, wenn Du Gefahr läufst, Dich zu vergalloppieren ...

    Wo genau hakt es denn jetzt gerade?

    btw: das "signed" kannst Du Dir sparen ... das ist per default so. Also char, int, ... reicht da völlig. Lediglich dann, wenn Du explizit kein Vorzeichen willst, schreibst Du unsigned davor.

    cu,

    -ds-

  • Dich zu vergalloppieren ...

    das ist wovor ich etwas Angst habe...

    Wo genau hakt es denn jetzt gerade?

    grade versuche ich die Funktion gpioStartThread genau zu verstehen und sie mit dem Zeiger auf die o.g. Struktur umzusetzen.

    und die Ultraschalmessung bleibt weiterhin an der erste Unterschleife hängen:


    Aber ich glaube ich muss mal Pause bis morgen machen, denn das Gehirn raucht langsam...

    Grüße aus Berlin,

    Golpe



  • Also was die Messung betrifft: da hattest Du doch einen Code, der funktioniere, oder?

    Dann nimmst Du halt erst mal den ...

    Eins nach dem anderen, dann wird das schon.

    Und überfordere Dich nicht, sonst geht Dir irgendwann der Spass an der Sache aus ...

    cu,

    -ds-

  • Also was die Messung betrifft: da hattest Du doch einen Code, der funktioniere, oder?

    Ich hatte einen, der alleine in eine Datei funktiniert aber wenn ich es bei dem Projekt Olivia einfüge, bleibt in der Schleife bei olivia.c hängen

    Grüße aus Berlin,

    Golpe



  • Heute muss ich meine neugeborene ausm krankenhaus abholen.

    Herzlichen Glückwunsch allen Beteiligten und alles Gute für die neue Erdenbürgerin (wenn ich das richtig rausgelesen habe) Lass den Pi Pi sein, es gibt grad wichtigeres. Viel Glück euch (unbekannterweise).

  • Endlich habe ich mal ein Paar Minuten,

    Setz' doch vielleicht mal den Code aus meinem Beispiel ein.

    Ich habe es gemacht aber bleibt weiterhin an die erste Schleife hängen

    schönen Gruß

    Grüße aus Berlin,

    Golpe



  • Hi,

    Hast Du mal die Pins überprüft, ob Du meinen Code auch an Deine Verdrahtung angepasst hast?

    grade angepasst. Eile ist nie gut...

    Dein Code so angepasst funktioniert eigenständig:

    wenn ich es in meinem Programm implementiere kommt deine Meldung time out1! (weiterhin die erste Schleife)

    soll ich vielleicht lieber Bäcker werden?;(

    Grüße aus Berlin,

    Golpe



Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!