You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Flipswitch状态存入变量?用于控制Raspberry Pi输出

How to Control Raspberry Pi GPIO with a Flip Switch (ON=1, OFF=0)

Hey there! As someone who’s juggled electrical work and Raspberry Pi projects before, I totally get what you’re aiming for. Let’s walk through how to make that flip switch control your Pi’s outputs, with ON setting a variable to 1 and OFF to 0.

Step 1: Set Up the Frontend Flip Switch

First, let’s assume you’ve got your flip switch’s HTML/CSS ready. We just need to add a bit of JavaScript to detect when the switch toggles and send that state to your Pi. Here’s a simplified example:

<!-- Your flip switch HTML (adjust classes to match your generated code) -->
<label class="flip-switch">
  <input type="checkbox" id="piSwitch">
  <span class="slider"></span>
</label>

<script>
const switchElement = document.getElementById('piSwitch');

// Listen for switch state changes
switchElement.addEventListener('change', function() {
  // Set our variable: 1 if ON (checked), 0 if OFF
  const switchState = this.checked ? 1 : 0;
  
  // Send the state to your Raspberry Pi's backend
  fetch('/update-switch', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ state: switchState }),
  })
  .then(response => response.text())
  .then(data => console.log('Status updated:', data))
  .catch(error => console.error('Error sending state:', error));
});
</script>

Note: Make sure your flip switch's checkbox has the id="piSwitch" so the JavaScript can target it. Adjust the CSS classes to match whatever you generated for the switch styling.

Step 2: Set Up the Raspberry Pi Backend (Python Flask)

We’ll use Flask to create a simple web server that listens for the switch state and controls the GPIO. If you don’t have Flask installed, run this in your Pi’s terminal first:

pip install flask RPi.GPIO

Then create a file called app.py with this code:

from flask import Flask, request, jsonify
import RPi.GPIO as GPIO

app = Flask(__name__)

# Configure GPIO (adjust the pin number to match your wiring)
OUTPUT_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(OUTPUT_PIN, GPIO.OUT)

@app.route('/update-switch', methods=['POST'])
def update_switch():
    data = request.get_json()
    switch_state = data.get('state', 0)
    
    # Set GPIO output based on the switch state
    if switch_state == 1:
        GPIO.output(OUTPUT_PIN, GPIO.HIGH)
        print("Switch is ON - GPIO set to HIGH (1)")
        return jsonify({"status": "success", "state": 1})
    else:
        GPIO.output(OUTPUT_PIN, GPIO.LOW)
        print("Switch is OFF - GPIO set to LOW (0)")
        return jsonify({"status": "success", "state": 0})

@app.route('/')
def index():
    # Serve your HTML page with the flip switch
    return open('index.html').read()

if __name__ == '__main__':
    try:
        # Run the server so devices on your network can access it
        app.run(host='0.0.0.0', port=5000, debug=True)
    finally:
        # Clean up GPIO when the server stops to avoid issues
        GPIO.cleanup()

Step 3: Wire Up Your Raspberry Pi

  • Connect one end of your load (like an LED or relay) to GPIO pin 18 (or whatever pin you chose in app.py).
  • For LEDs: Add a 220Ω resistor between the GPIO pin and the LED’s anode, then connect the LED’s cathode to the Pi’s GND pin.
  • For high-voltage devices: Always use a relay between the Pi and your load—Pi GPIO pins can only handle ~16mA max, so relays let you safely control larger currents.

Step 4: Test It Out

  1. Save your HTML code as index.html in the same folder as app.py.
  2. Run the Flask server on your Pi:
    python app.py
    
  3. On any device connected to the same network, open a browser and go to http://[your-pi-ip-address]:5000 (find your Pi’s IP with hostname -I in the terminal).
  4. Toggle the flip switch—you’ll see the GPIO output change, and the Pi’s terminal will print the current state (1 for ON, 0 for OFF).

Quick Electrical Safety Reminder

  • Never connect high-voltage circuits directly to the Pi—always use a relay or optocoupler to isolate the Pi from dangerous voltages.
  • Double-check your wiring before powering anything on to avoid damaging your Pi or creating safety hazards.

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:28:06