1

I need to Write "pir sensor" motion detection COUNT to text file.

I tried with this code and this is work without writing to text file. when I put write to file it gives an error file = open("textFile.txt", "w") IndentationError: unindent does not matchanyouter indentation level. Expected Output is last motion count number in text file.

code is

    # Import required Python libraries
    import time
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    # Define GPIO to use on Pi
    GPIO_PIR = 7
 # Set pin as input

  GPIO.setup(GPIO_PIR,GPIO.IN) 


  Current_State  = 0

Previous_State = 0

    # I put  Variable= 0 for the motion Count
 Variable= 0
       try:
               print "Waiting for PIR to settle ..."

      # Loop until PIR output is 0
      while GPIO.input(GPIO_PIR)==1:
        Current_State  = 0
           print "  Ready"
 # Loop until users quits with CTRL-C
  while True :

    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      start_time=time.time()
      print "  Motion detected!"

      # here I need to write numbers for the text file.
      file = open("textFile.txt", "w")
      file.write(Variable)
      file.close()
      Variable+=1

      # Record previous state
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      stop_time=time.time()
      print "  Ready ",
      elapsed_time=int(stop_time-start_time)
      print " (Elapsed time : " + str(elapsed_time) + " secs)"
      Previous_State=0

except KeyboardInterrupt:
  print "  Quit"
  # Reset GPIO settings
  GPIO.cleanup()
1
  • 1
    if your code actually is spaced like that - then yes indent errors are causing you problems - are you using tabs and spaces or just spaces to indent? Commented Sep 9, 2014 at 18:16

2 Answers 2

1
import RPi.GPIO as GPIO
import time

# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)

# Define GPIO to use on Pi
GPIO_PIR = 7

print "PIR Module Test (CTRL-C to exit)"

# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)      # Echo

Current_State  = 0
Previous_State = 0
Variable=0 

try:

  print "Waiting for PIR to settle ..."

  # Loop until PIR output is 0
  while GPIO.input(GPIO_PIR)==1:
    Current_State  = 0    

  print "  Ready"    

  # Loop until users quits with CTRL-C
  while True :

    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      print "  Motion detected!"
      # Record previous state
      Previous_State=1
      file = open("textFile.txt", "w")
      file.write(Variable)
      file.close()
      Variable+=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      print "  Ready"
      Previous_State=0

    # Wait for 10 milliseconds
    time.sleep(0.01)      

except KeyboardInterrupt:
  print "  Quit"
  # Reset GPIO settings

This is my friend's code. (I believe nothing is wrong with your code but a few Indentation Error(e.g. spacing Error) For that you can use some sort of text editor (I use sublime text)

Sign up to request clarification or add additional context in comments.

Comments

0

You need to use a string with file.write, here is an example:

file = open("textfile.txt", "rw+") 
file.write(str(Variable))
file.close()

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.