Sida 1 av 1

Pumpaprojekt inför halloveeeen: Felmeddelande.

Postat: 8 oktober 2022, 14:55:37
av Repaterion
Jag och grabben sitter med ett pumpaprojekt till Helloween.

Men jag funderar på en varning/felkod om att jag bör välja BOARD resp BCM vilket jag är medveten om.
Vi har valt BOARD i detta fall och definierat detta i början av filen men varför meddelandet då?

Kod: Markera allt

#!/usr/bin/python3

from pydub import AudioSegment
from pydub.playback import play
import time
import os
import random as rnd
import RPi.GPIO as GPIO


trig_pin = 7
read_pin = 8

GPIO.setmode(GPIO.BOARD) #BOARD = J8
GPIO.setup(trig_pin, GPIO.OUT)
GPIO.setup(read_pin, GPIO.IN)



def play_sound():
	song = AudioSegment.from_file("sound/S1.mp3", format = "mp3")
	print ("Spelar testljud")
	play(song)

def sound_library():
	pass

def distance_check():	### USING A HR04 ULTRA SOUND SENSOR VIA VOLT.DIVIDER
	GPIO.output(trig_pin, 1)
	time.sleep(0.00001)
	GPIO.output(trig_pin, 0)
	
	Start_time = time.time()
	Stop_time = time.time()

	while GPIO.input(read_pin) == 0:
		Start_time = time.time()

	sleep(0.005)
	while GPIO.input(read_pin) == 0: #### SKALL VARA 1
		Stopp_time = time.time()
	elapsed_time = (Stopp_time - Start_time)
	distance = (elapsed_time * 34300 / 2)
	return distance

	sleep(1)

def main():
	try:
		print ("Main playing sound")
		play_sound()
		time.sleep(1)
		distance_check()
		dist = distance_check()
		print(f'Distance = {dist} cm')

	except KeyboardInterrupt:
		print ("Execution interrupted by user")
		GPIO.cleanup()

while True:
	if __name__ == '__main__':
		main()


FEL: runtime channel beror på att GPIO.cleanup inte lyckas då jag måste köra kill på programmt för det hänger sig i någon while-loop gissar jag på.

/home/pumpkin/scary/./halloween.py:15: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(trig_pin, GPIO.OUT)
Main playing sound
^CExecution interrupted by user
Main playing sound
Traceback (most recent call last):
File "/home/pumpkin/scary/./halloween.py", line 75, in <module>
main()
File "/home/pumpkin/scary/./halloween.py", line 66, in main
dist = distance_check()
File "/home/pumpkin/scary/./halloween.py", line 41, in distance_check
GPIO.output(trig_pin, 1)
RuntimeError: Please set pin numbering mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Postat: 8 oktober 2022, 17:48:29
av Zkronk
På ett ställe kallar du en variabel för Stop_time, och lite senare Stopp_time.
Kan det ha något att göra med dina problem, tro?

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Postat: 9 oktober 2022, 10:07:21
av Repaterion
Bra observerat där, men den variabeln bör inte påverka GPIO på RPi egentligen på viset?
Vad felmeddelandet egentligen säger mig är att jag inte satt GPIO-numreringen till antingen BCM (SOC//CPU) eller BOARD (Stiftlisten på själva kortet)
Men den är ju satt till BOARD för att grabben tyckte det var enklast att koppa så.

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Postat: 10 oktober 2022, 21:25:39
av Mr Andersson
GPIO.cleanup() rensar bort vald pin mode. Det ska bara köras en gång när du är klar med all IO.

Du kör main, main fångar ctrl-c och kör gpio cleanup, sen körs main igen från den yttre loopen men med avstängd IO.
Den loopen är också anledningen att du måste använda kill för att avsluta.