Beiträge von pi-kurti

    Hallo,

    Ich bin schon ganz verweifelt, denn ich versuche das scheinbar unmögliche:

    Ich möchte eine einfache WEB-Setie mit C++ und Apache2 zu programmieren.

    Das soll nix kompliziertes werden (gaaanz einfach) mit Bordmitteln.

    Die sollte nur eine Überschrift ("Bitte drücke einen Button"), und 2 Button (="Start" und "Stop") und einen Querbalken unter der Überschrift haben.

    Das Programm soll auf Drücken des Button "Start" eine Ausgabe auf die Konsole machen (z.B.:"Start gedrückt") und die Seite dann weiter aktiv anzeigen.

    Beim Drücken des Button "Stop" macht sie eine Ausgabe auf der Konsole ("Exit gedrückt") und beendet das Programm.

    Gibt es da einen Genius der sowas schon mal gemacht hat?

    Vielen Dank an alle die mir helfen können

    Kurt

    peuler

    Ja das ist so! Ich mache nur kleine Anwendungen und da geht es zimlich fix (2-3 Sekunden max 1 Minute).

    Für andere IDs wie Ecclipse oder QT brauch man eine Toolchain etc. und das kann ziemlich mühsam sein weil die auf die jeweilige Raspberry Version angepass werden müssen.

    Also ich habe jetzt eine Lösung gefunden.

    1. Script "gdbscript" auf dem Raspberry mit dem Inhalt

    ===>

    #!/bin/bash.

    #

    sudo gdb $*

    <===

    erstellen:

    2. Als ausführbare Datei machen:

    chmod + gdbscript

    3. In Netbeans

    --> Tab "Tools" aufrufen

    ------> Options

    ----------> C/C++ Tab

    Hier den Namen des Scripts einfügen

    Fertig!

    Hallo,

    seit Tagen vesuche ich ein C/C++ Programm für die Aufname und Speicherung von Bildern mit der RPICAM zu erstellen. Ich verwende bullseye auf einem Raspberry Zero.

    Da gibt es ein ziemliches Chaos im Intenet was das alles mit den Libraries angeht. Das Meiste funktioniert nicht oder es sind nur unvollständige Fragmente vorhanden.

    Hat überhaupt schon mal jemand sowas gemacht?

    Vielen Dank.

    Kurt

    Hallo,

    @_blackjack_,

    ja das sollte funktionieren, denn die IDE läuft auf dem Windows PC und der Compiler und Linker auf dem RPI.

    Die anderen IDEs wie QT oder Eclipse sind viel zu kompliziert für kleine Anwendungen. Ausserdem ist es ein ziemlich mühsames Unterfangen die Toolchains etc vernünftig zu bauen bzw. richtig zu konfiguriren.

    Jetzt bin ich weiter gekommen.

    Hallo,

    Ich habe hier schon einige gute Hilfen bekommen. Jetzt stecke ich mit meiner Arbeit mit dem Raspberry und NetBeans 21 fest.

    Ich denke da gibt eine relativ einfache Antwort für mein Problem.

    Ich habe ein C/C++ Programm geschrieben das auf GPIO Ports zugreift. Dieses Programm will ich mit NetBeans debuggen bzw. ausführen.

    Leider geht das nicht so einfach, denn der Raspberry verweigert den Zugriff darauf.

    Sorry, you don't have permission to run this program.
    ("Try running as root, e.g. precede the command with sudo").

    Jetzt ist meine Frage : Wie bekomme ich Netbeans bzw. den Raspberry dazu dass ich das Programm ausführen bzw. debuggen kann?

    Vielen Dank

    Kurt

    Hallo,

    ich suche schon seit Tagen nach einer halbwegs guten Beschreibung wie man Netbeans nach der installation konfiguriert.

    Ich möchte ein kleine C-Programm füe einen Raspberry Zero w schreiben. Das will ich nicht mit dem Editor nano machen. Dabei bin ich auf netbeans gestoßen und das mach in meienAugen eine guten Eindruck. Ich denke ein Vorteil ist, dass man direkt mit der aktuellen Software auf dem Raspberry arbeite und brauch denn keine toolchain.

    Leider kann ich keine Anleitung finden wie ich die IDE konfigurieren muß. Das scheint aufgrund der unterschiedlichen Netbeans versionen keine infache sache zu sein.

    Ich habe dazu folgende Fragen :

    1. Zu welcher Version gibt eine aktuelle Beschreibung?
    2. Wo finde ich eine aktuelle Beschreibung der einzelen Seiten für die Konfiguration?

    Es wäre schön wenn ich bald Hilfe bekäme.;(

    Hallo,

    ich befürchte, dass es hier im Forum keine Person gibt, die fähig oder willens ist mir zu helfen. :conf:

    Ich habe mit Hilfe anderer informationsquellen eine einfache Lösung gefunden:

    Das Programm muß mit root Privilegien ausgeführt werden.

    Hallo,

    Ich bin gerade dran einen SG90 servo mit wiringPI und C zu programmieren.

    Nach langem suchen bin ich halbwegs fündig geworden. Leider erschließen sich für mich die Funktion Parameter nicht ganz.

    Code

    Code
        pinMode(pin, PWM_OUTPUT);
        pwmSetMode(PWM_MODE_MS);    
        pwmSetRange(200);
        pwmSetClock(192);

    Was muß ich denn für Werte in pwmSetMode, pwmSetRange und pwmSetClock eintragen. Wenn ich das Programm in dieser Schleife laufen lasse, bewegt sich dir Servoachse um ca. 60°.

    Code

    Code
        for (int i=50; i<=110; i=i+2)
        {        
            pwmWrite (pin, i) ;
            delay (500);    
        }

    Ist das ok?

    Was bewirkt pwmSetRange und pwmSetClock und was bedeuten die Schritte, die ich in der Schleife ausführe.

    Ist das delay ok? Das bedeutet, dass alle 500 ms ein Schritt ausgeführt wird oder?

    Wie kann ich erreichen dass sich die die Achse um +/-90° dreht?

    Vielen Dank für Eure Hilfe

    Kurt

    Hallo _deets_ und Rap-Berlin,

    danke für Eure Antworten.

    Ja das ist schade aber das ist ok.

    Ich denke ich löse es so, dass das Programm in kurzen Abständen den Beschleunigungssensor ausliest und prüft ob ein Schwellwert des Betrages des Vektors überschritten wird.

    Dann liest es die zugeörige GPS Position aus und speichert es in einer Datei.

    Eleganter wäre es wenn ich einen threshold im adxl345 definiere und dann bei einem solchen Ereignis die GPS Position ermittle.

    Aber ich weis nicht ob man den threshold für +/- Werte definieren kann. Das heist : wenn der Z-Wert z. B. +2g oder - 2g ist soll ein Signal kommen.

    Aber ich denke das wird dann zu kompliziert.

    Hallo,

    seit mehreren Tagen suche ich nach einer Lösung für das folgende Problem:

    Bau eines Gerätes zur Schlaglochsuche mit einem

    1. Raspberry
    2. Beschleinuigungssensor
    3. GPS-Empfänger

    Die Lösung sollte folgende Funktione erfüllen:

    • Der Raspberry befindet sich im Schlafmodus bis der Beschleunigungssensor erkennt dass ein bestimmter Beschleunigungswert (z.B. 2g) überschritten wird.
    • Der Beschleunigungssenser setzt einen Interrupt ab, der den Raspberry aufweckt.
    • Das Programm registriert den Beschleunigungswert und liest die aktuelle GPS-Posistion aus.
    • das Programm schreibt diese Werte (Beschleunigung und GPS-Position) in eine Datei.

    Meine Frage ist jetzt:

    Wie kann ich den Beschleunigungssensor so programmieren, dass er einen Interrupt über den PIn INT1 oder INT2 an den Raspberry schickt?

    Die Sensoren ADXL345 oder MPU6050 kenne ich.

    Das GPS-Module is GY-NEO6MV2 ist auch kein Problem.

    Es wäre schön wenn ich hier Hilfe finden könnte.

    Vielen Dank im Vorraus

    Kurt

    Hallo hier im Forum gute und hilfreiche Antworten bekommen.

    Darum wende ich mich mit einer neuen Frage an Euch.

    Zunächst zur HW un SW:

    Ich habe einen RPI3

    Raspberry Pi 3 Model B Plus Rev 1.3

    Mit der Software:

    PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"

    NAME="Raspbian GNU/Linux"

    VERSION_ID="10"VERSION="10 (buster)"

    VERSION_CODENAME=busterID=raspbian

    ID_LIKE=debianHOME_URL="http://www.raspbian.org/"

    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

    An den RPI habe ich einen GPS-Empfänger

    NEO-6M GPS mit dem TX bzw. RX-Pin verbunden.

    Wenn ich das Kommando
    cat /dev/ttyAMA0

    ausführe, dann bekomme ich folgende Meldung

    cat: /dev/ttyAMA0: Device or resource busy
    Den GPS-Empfänger kann ich auslesen

    gpsmon und cgps -s geht.

    Ich habe ein c++ programm erstellt. Da kommt beim ausführen des Statement

    fd = open(UART, O_RDONLY | O_NOCTTY);

    der Wert -1 für fd zurück.

    Wie kann ich erreichen, dass das device ttyAMA0 ohne sudo ausgelesen werden kann.

    hyle,

    vielen Dank für Deine Antwort.

    Ich denke dass ich mich nicht ganz klar ausgedrückt habe,

    Das eigentliche Problem zunächst ist, Dass hier

    Code
    // Init GPIO21 (on pin 13) as input (DATA), GPIO22 (pin 15) as output (nRES)
        *(gpio.addr + 2) = (*(gpio.addr + 2) & 0xfffffe07)|(0x001 << 6);

    wahrscheinlich der GPIO21 und GPIO22 definieret wird. Und das verstehe ich nicht so richtig.

    Denn zwischen dem Rapberry1 und Raspberry ZERO scheint es einige Unterschiede bei der Adreesierung der GPIOs zu geben.

    Was macht das Programm da?

    Hallo,

    ich bin gerade dran mit einem Rasperry Zero eine Funkschnittstelle zu meiner Wetterstation zu programmieren.

    Ich bin auf eine relativ alte Anleitung von 2012. Das ganze sieht zunächst mal ganz gut aus, denn es werden anscheinend Bits empfangen.

    https://www.susa.net/wordpress/2012…m01-and-rfm12b/

    dafür gestoßen.

    Das ganze sieht zunächst mal ganz gut aus, denn es werden anscheinend Bits empfangen.

    Leider wird hier wahrscheinlich sehr hardwarenah programmiert und ich habe da einige Schwirigkeiten das zu verstehen.

    Z.B:

    bzw:

    Code
        fd = open(device, O_RDWR);
        if (fd < 0)
            pabort("can't open device");
    
        // SPI mode
        if(ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1)
            pabort("Can't set SPI mode");
    
        // Bits per word (driver only supports 8 -bits I think, but RFM12B handles this ok)
        if(ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1)

    für den device gilt folgende Definition:

    Code
    static const char *device = "/dev/spidev0.0";

    Nun zu meiner eigentlichen Frage:

    1. wie finde ich heraus was da wirklich gemacht wird? Stimmen Da die GPIO-Adressen GPIO21 und GPIO22 noch zusammen?
    2. gibt es eine Möglichkeit dies alles mit wiringPi zu realisieren?

    Ich würde mich freuen Hilfe zu bekommen.

    Vielen Dank!

    hyle,

    vielen Dank für Deine schnelle Antwort.

    Ich habe jetzt wie dort beschrieben in das Register CTRL_REG3_M den Wert 0x0 geschrieben.

    Code
    // Set CTRL_REG1_M (=0x20) = 0b1001 0000, x, y medum performance  output rate = 10
    reg = 0x20;
    val = 0x90;
    wiringPiI2CWriteReg8 (fdm, reg, val);
    
    // Set CTRL_REG3_M (=0x22) = 0b0000 0000, Continuous-conversion mode
    reg = 0x22;
    val = 0x00;
    wiringPiI2CWriteReg8 (fdm, reg, val);


    Jetzt tut es:

    Code
    Index :         37       Mag = X :-1957  Y :3079         Z : 3825        total :  5285.9

    Aber wie berechne ich dentatsächlichen Physikalischen Wert in nanoGauß?

    Die schreiben :

    Zitat

    M_GN Magnetic sensitivity FS = ±16 gauss 0.58 mgauss/LSB

    Aber da komme ich auch nicht annähernd an diese Werte wie mit dem IGRF-Declination Calculator ermittelt.

    Da müßte ich doch den ausgelesenen Wert von total wie folgt berechnen:

    Code
    Totalintensität = 5285,9 / LSB*0,58

    Ich habe gerade mal nachgeschaurt was das Python-Programm von dieser Seite

    (http://cool-web.de/raspberry/lsm3…c-ansteuern.htm)

    macht. Der Kompass scheint ja richtig unruhig zu sein. Ist das möglich?

    Hallo,

    ich bin gerade dabei auf meinem Raspberry ein c++ Programm zu schreiben um einen Kompass zu erstellen.

    Das funktiuoniert schon ganz gut. Ich habe jetzt allerdiungs das Problem, dass die gelesenen Daten nicht ordentlich angezeigt weden.

    Es sollten laut IGRF folgende Messwerte herauskommen:

    Ich denke, dass ich den Magnetometer nicht richtig konfiguriert habe.

    Hat jemand Erfahrung wie man das Gerät konfigurieret?

    Ich bin mal hergegangen und habe das RegisterCTRL_REG1_M wie folgt konfiguriert:

    Code
        reg = 0x20;
        val = 0x90;
        wiringPiI2CWriteReg8 (fdm, reg, val); // Set CTRL_REG1_M (=0x20) = 0b1001 0000, x, y medum performance  output rate = 10

    Da bekomme ich diese Rohdaten heraus:

    Code
    Index :         151      Mag = X :-1763  Y :2711         Z : 3801        total :  4990.52

    Das sieht so aus als würde da eimal ein Wert gelesen und der ändert sich dann nicht mehr.

    Ich würde mich echt freuen, wenn mir da jemand helfen könnte.

    Vielen Dank im Voraus!