Seite 1 von 1

Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Sonntag 27. März 2022, 13:47
von Schlangenmensch
Hallo,
ich habe mal wieder etwas herumgebastelt und Folgendes Programm zusammengestellt:

from machine import ADC,Pin
from utime import sleep

SOUND_SENSOR = ADC(1)
LED = machine.Pin(16,machine.Pin.OUT)
STAT = machine.Pin(25,machine.Pin.OUT)

file = open("status.txt", "w")

while True:
average = 0
STAT.value(1)
sleep(5)
STAT.value(0)

for i in range (1000):
noise = SOUND_SENSOR.read_u16()/256
average += noise
noise = average/1000
print(noise)



if noise > 20.000000:
LED.value(1)
file.write("ein" +"\n")
else:
LED.value(0)
file.write("aus" +"\n")
sleep(30)

Mit dem Programm möchte ich so eine Art Akustikschalter umsetzen, der gleichzeitig in die Datei "Status.txt" den Zustand der "Geräuscherkennung" aufzeichnet. Pin 25 dient nur als Überwachung ob das Programm überhaupt läuft.

Nun meine eigentliche Frage. Wenn ich das Programm am PC über den Pico laufen lasse, funktioniert alles einwandfrei. sobald ich aber den Pico an eine Powerbank anschliesse, sehe ich zwar, das Programm läuft aber die Daten EIN/AUS werden in der Status.TXT nicht aufgezeichnet.
Das Programm wurde natürlich vorher in main.Py umbenannt.

Bitte keine Kommentare zu dem schrottigen Programm oder Sinn und Unsinn von dem Programm.

Was mach ich hier falsch?

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Sonntag 27. März 2022, 20:24
von Sirius3
Wenn das Schrottige am Programm aber Schuld daran ist, dass das Programm nicht funktioniert?

Code: Alles auswählen

from machine import ADC, Pin
from utime import sleep

SOUND_SENSOR = ADC(1)
LED = machine.Pin(16,machine.Pin.OUT)
STAT = machine.Pin(25,machine.Pin.OUT)

while True:
    STAT.value(1)
    sleep(5)
    STAT.value(0)
    average = sum(
        SOUND_SENSOR.read_u16()
        for i in range(1000)
    ) / 256000
    print(average)
    
    on = noise > 20
    LED.value(on)
    with open("status.txt", "a") as file:
        file.write("ein\n" if on else "aus\n")
    sleep(30)

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Montag 28. März 2022, 08:05
von Schlangenmensch
.....wenn das schrottige Programm das Problem ist nehme ich die Kritik natürlich gerne an. Habe in der Zwischenzeit selbst nochmal etwas herumgebastelt und habe das Programm so hinbekommen das es mir die Zustände ein/aus auch auf dem Pico speichert.

Code: Alles auswählen

from machine import ADC,Pin
from utime import sleep

SOUND_SENSOR = ADC(1)
LED = machine.Pin(16,machine.Pin.OUT)
STAT = machine.Pin(25,machine.Pin.OUT)



while True:
    average = 0 
    STAT.value(1)
    sleep(3)
    STAT.value(0)
    
    for i in range (1000):
        noise = SOUND_SENSOR.read_u16()/256
        average += noise
    noise = average/1000
    print(noise)
    
    
    
    if noise > 20.000000:
        file = open("status.txt", "a")
        LED.value(1)
        file.write("ein" +"\n")
        file.close()
    else:
        file = open("status.txt", "a")
        LED.value(0)
        file.write("aus" +"\n")
        file.close()
    
        
    sleep(60)
Vielen Dank.

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Montag 28. März 2022, 08:14
von Dennis89
Hallo,

gut dass die Datei jetzt geschlossen wird. Wenn du dazu aber das 'with'-Statemant benutzt (siehe Sirius3 Code), dann wird die Datei "automatisch" geschlossen, auch wenn das Programm abbricht.
Es bietet sich auch immer an absolute Pfade zu verwenden. 'pathlib' wäre hier eine passende Bibliothek.

Grüße
Dennis

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Montag 28. März 2022, 08:18
von __deets__
Das with statement und die Probleme, die man sich ohne es einfängt, wurden Schlangenmensch schon in der Vergangenheit nahegelegt. Hätte man sich also alles sparen können, aber offensichtlich sind solche Hinweise Perlen vor die Säue, weil nur “Kommentare”, die man sich verbittet 🙄

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Montag 28. März 2022, 09:03
von Dennis89
Achso, dann schlängelt er sich hier so durch 🤔

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Dienstag 29. März 2022, 08:04
von Schlangenmensch
Es tut mir leid, wenn es für manche User so rüberkommt, daß Kommentare auf meine Fragen "Perlen vor die Säue" sind. Ich habe offensichtlich manche Codes nicht richtig gelesen, bzw. dachte der Code wurde einfach kopiert um mir das schlechte Programm unter die Nase zu reiben.

Des Weiteren musste ich zuerst einmal verstehen, wofür das with Statement steht.

Ich bitte Euch nicht all zu streng mit mir zu sein. Es sind bei mir die ersten Schritte in der Programmierung und bin auf jede Hilfe angewiesen. Ich arbeite auch schon diverse Tutourials durch aber manchmal komme ich da auch nicht weiter, weshalb ich mich dann an Euch wende.

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Dienstag 29. März 2022, 09:48
von __deets__
Das Problem ist nicht, auf Hilfe angewiesen zu sein. Das Problem ist, dass du - bar jeder Ahnung - meinst besser zu wissen, was hier Hilfestellung ist, und was nur genoele an deinem Skript. Und uns irgendwelche niederen Motive unterstellst.

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Dienstag 29. März 2022, 11:02
von DeaD_EyE
Bitte keine Kommentare zu dem schrottigen Programm oder Sinn und Unsinn von dem Programm.

Was mach ich hier falsch?
Das ist unlogisch und schließt sich gegenseitig aus.
Es gibt destruktive und konstruktive Kritik.
Konstruktive Kritik wird hier ausgeübt. Damit muss man umgehen können.

Bisher habe ich nur konstruktive Kritik mit Vorschlägen zur Verbesserung des Codes gesehen.

With-Statement: https://realpython.com/python-with-statement/

Re: Programm läuft auf PC aber nicht auf Pico selbst.

Verfasst: Mittwoch 30. März 2022, 10:02
von Schlangenmensch
Aslo Leute, ich möchte hiermit das Thema beenden und mich für die Kritik bedanken. Leider sind hier einige Zeilen nicht so herübergekommen wie sie von mir gedacht waren, bzw. ich habe wohl unüberlegt in die Tatsen gehauen. Hierfür möchte ich mich nochmals entschuldigen.