Pumpaprojekt inför halloveeeen: Felmeddelande.

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Repaterion
Inlägg: 538
Blev medlem: 4 februari 2011, 00:57:32
Ort: Gustavsfors (Lite till vänster om världens utkant)

Pumpaprojekt inför halloveeeen: Felmeddelande.

Inlägg 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)
Zkronk
Inlägg: 1423
Blev medlem: 23 augusti 2005, 16:44:36
Ort: Uppsala

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Inlägg 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?
Användarvisningsbild
Repaterion
Inlägg: 538
Blev medlem: 4 februari 2011, 00:57:32
Ort: Gustavsfors (Lite till vänster om världens utkant)

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Inlägg 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å.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Pumpaprojekt inför halloveeeen: Felmeddelande.

Inlägg 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.
Skriv svar