Posts by hunter_spike

    Hallo zusammen,
    ich habe gerade versucht auf einer frisch eingerichteten Pi (Raspbian) den x11vnc einzurichten.


    Nach der Anleitung hier: https://www.elektronik-kompend…/raspberry-pi/2011121.htm


    Nach der Warnung über den Speicherplatz kommt die Meldung:


    WARNING: The following packages cannot be authenticated!



    Und später ganz viele "failed"-Meldungen.


    Ich habe zwei Bildschirmfotos mal angehangen. Kann mir da jemand weiterhelfen?


    Den x11VNC wollte ich nehmen, um den aktuellen Bildschirminhalt der Raspi zu sehen. Ansonsten musste ich das Programm für meine Heizungssteuerung ein zweites mal starten wenn ich die Werte der Pufferspeicher im Wohnzimmer sehen wollte. Und wenn zwei mal das gleiche Programm meine Pumpen steuert, das geht nicht gut habe ich festgestellt.

    Hallo zusammen,
    ich stehe gerade auf dem Schlauch.


    Beispiel:
    Ich möchte (als Beispiel) eine Heizung bei 18 Grad einschalten und bei 21 wieder ausschalten.


    Code
    if (Temp<18) 
      {Heizung = 1}
       else {
           {if ((Heizung==1) && (Temp >21))
             {Heizung = 1}
        else {Heizung =0}


    Die Idee dahinter:
    1. Bei unter 18 Grad einschalten.
    2. Wenn die Heizung eingeschaltet hat, aber noch nicht 21 Grad erreicht hat, dann soll sie anblieben.
    3. In allen anderen Fällen soll die Heizung aus sein.


    Punkt 1 Klappt.
    Punkt 2 klappt nicht. Ich vermute es liegt daran das die bedingung (Temp<18) nicht mehr erfüllt ist und somit die Heizung schon wieder aus ist.


    Hat jemand eine Idee? Bei einer SPS würde ich einfach ein RS-Gatter nehmen. Aber das gibts in C scheinbar nicht. :(


    Danke für Eure Hilfe,


    Achim


    ......


    [hr]
    Nachtrag: du hast den file-descriptor jetzt dacModule genannt. Das ist eben der Parameter, der das konkrete Device steuert. Du musst also verschiedene solcher Variablen vorhalten & je nach gewünschtem I2C-Device benutzen.


    Ah jetzt ja: Der Groschen viel Pfennigweise:


    Code
    int dacModule = wiringPiI2CSetup(0x38)
    int NameDesZweitenModuls = wiringPiI2CSetup(0x40)


    Danke schön!!!
    :bravo2:

    Nirgens im Netz ist ein einfaches Programm zu finden um einen PCF8574 anzusteuern. Aber ich habe es tatsächlich geschafft mir eins selber zu schreiben:



    Frage 1: Mein Englisch ist nicht das beste, aber ich meine verstanden zu haben das wiringPi die Eingänge beim PCF8574 "umdreht", da die ja normal immer "1" sind macht wiringPi die auf immer "0" und umgekehrt. Hab ich da was falsch gemacht oder was falsch verstanden? (Weil bei"255" sind alle Relais aus und bei "0" sind alle an.


    Frage 2: was müsste ich tun, wenn ich jetzt ein zweites Modul gleichzeitig benutzen möchte. Andere Hardwareadresse ist klar. Aber wie sag ich dem dacModule welche ich gerade meine?
    Im Zweifel müsste es doch über:


    int wiringPiI2CWriteReg8 (int fd, int reg, int data) ;



    gehen, da ich da über "reg" die Adresse mitgebe. Gehts auch anders?

    Ich glaub ich hab da gerade was verstanden:
    Zeile 6 ff:

    Code
    int readInput(int fd, int reg)
    {
        wiringPiI2CReadReg8(fd, reg);
        return wiringPiI2CReadReg8(fd, reg);
    }


    Den Befehl "readInput" baue ich mir da gerade selber (Unterprogramm). Er bekommt zwei Werte, die in dem Unterprogramm "fd" und "reg" heißen.


    In Zeile 16:

    Code
    int dacModule = wiringPiI2CSetup(0x48);


    gebe ich dem Befehl wiringPiI2CSetup die Adresse von meinem Chip mit. Den Rückgabewert schreibe ich in dacModule.


    Weiter unten bei:

    Code
    for (i=0;i<4;i++) A[i] = readInput(dacModule, A_Reg[i]);


    bestimme ich, das "readInput" die Werte "dacModule" und "A_Reg(0-4)" erhält, die aber in "readInput"selber "fd" und "reg" heißen.
    "A_Reg" ist das Register, in dem der Analogwert steht. "dacModule" ist der Analogwert.


    Ist das annähernd so richtig???

    Ich nochmal,
    das lauffähige, oben genannte Prog fängt wie folgt an:



    wofür steht denn das "fd" und das "reg" hinter den Befehlen. Ich war eigentlich davon ausgegangen das da Werte an die einzelnen Befehle übergeben werden oder zurückgegeben werden. Habe probiert die Werte mit cout auszugeben. Aber das klappt alle irgendwie nicht. =(

    Hallo Dreamshader und deets,
    ich habe diese Woche Nachtschicht und die Raspi auf der Firma liegen. Wenn alle Maschinen laufen hab ich Zeit für die Raspi :)


    dreamshader, dein Tip

    Code
    $ g++ pcf8591.cpp -o pcf8591 -lwiringPi


    hat funktioniert.


    Aber warum ich das machen muss hab ich nicht verstanden:


    Ich rufe das Programm g++ auf.
    Das soll pcf8591.cpp übersetzen
    Sollte schon eins da sein dann überschreiben.
    Das Neue Programm soll pcf8591 heißen.


    Die wiringPi habe ich doch schon mit include in meiner Headerdatei eingebunden......


    deets, das Programm macht scheinbar das, was es soll:
    4 Analogsignale einlesen,
    Der Reihe nach auf dem Bildschirm ausgeben,
    den Durchschittswert auf den analogen Ausgang ausgeben.
    Bin ich aber auch erst drauf gekommen als ich sah, das da ein "Write" vor der Berechnung steht...


    Danke erstmal für Eure Hilfe.


    Gruss,


    Achim



    Folgendes hat sich schon erledigt. Erst die Suche benutzen....dann fragen. :(
    Hätte mit dem kill-Befehl abbrechen können. Stecker ziehen geht aber auch. ';-)
    Das Prog benötigt auf jeden Fall noch eine Routine zum beenden.


    Automatisch zusammengefügt:
    [hr]
    Und da habe ich gleich das nächste Problem:
    Ich hatte eben das Prog ausgeführt und die Funktion mit Taschenlampe und Multimeter getestet. Alles gut.
    Beim verlassen der Werkstatt hab ich alle Fenster an der Raspi geschlossen.
    Wie ich gerade wieder rein komme und spaßeshalber mit der Taschenlampe auf den LDR leuchte, da bewegt sich das Multimeter.
    Wo ist denn jetzt das laufende Programm???
    Wie muss ich das Termial beenden, damit das Programm auch geschlossen wird???


    Gruss,


    Achim

    Hallo deets,
    Du hast bestimmt Recht. Der beschriebene Fall geht einfacher zu lösen. Ich hab mir vor ein paar Wochen ein dickes c++-Buch gekauft und die ersten 100 Seiten trocken runtergelesen. So grob hab ich verstanden, was da steht.
    Neben der Raspi reizt es mich aber auch PIC-Prozessoren zu programmieren. Außerdem sind die Industrieroboter meines Arbeitgebers auf c++-Basis programmiert.
    Wäre sicherlich nicht von Nachteil wenn ich da ein Ass im Ärmel hätte.


    Zum oben geschriebenen Programm:
    Habe das ja nur aus dem Netz runter geladen damit meine Chips irgend was machen. Über den Sinn hab ich mir noch keine Gedanken gemacht.



    Gruss,


    Achim

    Hallo zusammen,
    ich möchte mich kurz vorstellen:
    1971 geboren,
    1987 Kommunikationselektroniker gelernt,
    abgebrochenes Studium Nachrichtentechnik =(
    seit dem Betriebselektriker, Schwerpunkt Fehlersuche mit S7 bei einem Automobilzulieferer,
    seit 2 Wochen Besitzer einer Raspberry Pi 3.


    Ich weiß schon das mein Betriebssystem linux ist,
    das "sudo" die Rechte von "root" ersetzt,
    und das "nano" ein Texteditor ist.


    ... und das war gar nicht so einfach raus zu finden! :bravo2:


    Mein Ziel ist es das die Raspi ein paar Steuerungsaufgaben in meinem Haus automatisiert. Das ganze soll unter c++ geschehen. Ich hab da zwar keine Ahnung von, aber auf der ein oder anderen Seite im Internet wird die Sprache empfohlen.
    Einzelne gpios kann ich auch schon ein- und ausschalten.


    Ich hab alle möglichen Sachen installiert um auf den i2c-Bus zuzugreifen.
    Über einen Level-Shifter habe ich zwei PCF8574 (IO-Expander) sowie einen PCF8591 angeschlossen.


    Bei dem Befehl:

    Code
    pi@raspberrypi:~ $ sudo i2cdetect -y 1


    kommt tatsächlich als Antwort:
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- 38 39 -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --



    da bin ich schon ein bisschen stolz auf mich! :D


    Jetzt hab ich im Netz das Programm pcf8591.cpp gefunden:


    Wenn ich jetzt:

    Code
    pi@raspberrypi:~ $ sudo g++ pcf8591.cpp -o pcf8591


    eingebe, dann kommt

    Code
    /tmp/cc5ZLyXt.o: In function `readInput(int, int)':
    pcf8591.cpp:(.text+0x1c): undefined reference to `wiringPiI2CReadReg8'
    pcf8591.cpp:(.text+0x28): undefined reference to `wiringPiI2CReadReg8'
    /tmp/cc5ZLyXt.o: In function `main':
    pcf8591.cpp:(.text+0x48): undefined reference to `wiringPiSetupGpio'
    pcf8591.cpp:(.text+0x50): undefined reference to `wiringPiI2CSetup'
    pcf8591.cpp:(.text+0x154): undefined reference to `wiringPiI2CWriteReg8'
    pcf8591.cpp:(.text+0x1dc): undefined reference to `delay'
    collect2: error: ld returned 1 exit status
    pi@raspberrypi:~ $


    als Antwort.
    Muss ich da noch irgend was installieren? Ist das Programm nicht richtig (für mich)? Die Adresse 48 stimmt......


    Danke für Eure Hilfe,


    Gruss,


    Achim Meyer