Использование системы в различных ситуациях, вопросы программирования сценариев.
Модератор: immortal
-
Sapizdullin
- Сообщения: 408
- Зарегистрирован: Сб фев 18, 2017 9:47 am
- Откуда: Земля
-
Благодарил (а):
54 раза
-
Поблагодарили:
61 раз
Сообщение
Sapizdullin » Сб май 26, 2018 11:26 pm
Yashalta писал(а): ↑Сб май 26, 2018 12:55 pm
Сказал всем "Спасибо", понял, что нудно делать! На данный момент у меня нет резистора 4.7 kOm, найду поставлю, отпишусь!
ТОлько вопрос: Почему у меня напряжение на пине не сбрасывается на "0"! Ни где, не видел, в такой простой схеме как подключение светодиода к Raspberry, что бы люди еще добавочно "Подтягивали пин к земле через 4,7 КОм"!
Можешь любым от 10 кОм до 3,6 кОм. Должно работать. Если не будет, значит выходной транзистор не запирается... Тогда будем думать коллективным разумом.

Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
-
Yashalta
- Сообщения: 317
- Зарегистрирован: Вс май 20, 2018 9:27 am
-
Благодарил (а):
160 раз
-
Поблагодарили:
29 раз
Сообщение
Yashalta » Пн май 28, 2018 8:41 pm
Резистор еще не нашел, как найду так сразу и попробую..
Сегодня просто в скрипте поменял упарвляющий пин и на другом пине все работает! Даволен как слон!:)
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Пн май 28, 2018 11:19 pm
https://raspberrypi.stackexchange.com/q ... io-cleanup
The GPIO.setup(relayPin, GPIO.OUT) sets the GPIO as an OUTPUT. When an OUTPUT a GPIO is actively driven to 3V3 or 0V.
The GPIO.cleanup() changes the GPIO to INPUT mode
Вы установили пин на вывод и тут же следующим шагом переключаете пин на вход.
В инпут моде полтора вольта болтается после клинапа, зачем клинап-то?
И подтяжки не причём))
- За это сообщение автора xor поблагодарил:
- Strangeman (Ср окт 24, 2018 8:38 pm)
-
Yashalta
- Сообщения: 317
- Зарегистрирован: Вс май 20, 2018 9:27 am
-
Благодарил (а):
160 раз
-
Поблагодарили:
29 раз
Сообщение
Yashalta » Вт май 29, 2018 8:00 pm
xor писал(а): ↑Пн май 28, 2018 11:19 pm
https://raspberrypi.stackexchange.com/q ... io-cleanup
The GPIO.setup(relayPin, GPIO.OUT) sets the GPIO as an OUTPUT. When an OUTPUT a GPIO is actively driven to 3V3 or 0V.
The GPIO.cleanup() changes the GPIO to INPUT mode
Вы установили пин на вывод и тут же следующим шагом переключаете пин на вход.
В инпут моде полтора вольта болтается после клинапа, зачем клинап-то?
И подтяжки не причём))
попробовал по вашей инструкции, светодиод вообще не загоратеся! Пробовал на 2-х разных пинах! Возможно я ошибся с написание кода...
Этот вот у меня был на включение
Код: Выделить всё
# -- coding: utf-8 --
import RPi.GPIO as GPIO
relayPin = 26
GPIO.setmode(GPIO.BOARD)
GPIO.setup(relayPin, GPIO.OUT)
GPIO.output(relayPin,GPIO.HIGH)
sleep(1)
print("Light On!")
Этот у меня был на выключение
Код: Выделить всё
# -- coding: utf-8 --
import RPi.GPIO as GPIO
from time import sleep
relayPin = 26
GPIO.setmode(GPIO.BOARD)
GPIO.setup(relayPin, GPIO.OUT)
GPIO.output(relayPin,GPIO.LOW)
sleep(1)
print("Light Off!")
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Вт май 29, 2018 8:42 pm
В первом коде на включение вы используете sleep, а from time import sleep не пишете, это нормально?
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Вт май 29, 2018 8:58 pm
https://opensourceforu.com/2017/07/intr ... ng-python/
Такой код у вас работает?
Код: Выделить всё
import RPi.GPIO as GPIO
#for the sleep method
import time
led = 8
#set numbering mode for the program
GPIO.setmode(GPIO.BOARD)
#setup led(pin 8) as output pin
GPIO.setup(led, GPIO.OUT,initial=0)
try:
#turn on and off the led in intervals of 1 second
while(True):
#turn on, set as HIGH or 1
GPIO.output(led,GPIO.HIGH)
print(“ON”)
time.sleep(1)
#turn off, set as LOW or 0
GPIO.output(led, GPIO.LOW)
print(“OFF”)
time.sleep(1)
except KeyboardInterrupt:
#cleanup GPIO settings before exiting
GPIO.cleanup()
print(“Exiting...”)
-
Yashalta
- Сообщения: 317
- Зарегистрирован: Вс май 20, 2018 9:27 am
-
Благодарил (а):
160 раз
-
Поблагодарили:
29 раз
Сообщение
Yashalta » Вт май 29, 2018 9:39 pm
xor писал(а): ↑Вт май 29, 2018 8:58 pm
https://opensourceforu.com/2017/07/intr ... ng-python/
Такой код у вас работает?
Код: Выделить всё
import RPi.GPIO as GPIO
#for the sleep method
import time
led = 8
#set numbering mode for the program
GPIO.setmode(GPIO.BOARD)
#setup led(pin 8) as output pin
GPIO.setup(led, GPIO.OUT,initial=0)
try:
#turn on and off the led in intervals of 1 second
while(True):
#turn on, set as HIGH or 1
GPIO.output(led,GPIO.HIGH)
print(“ON”)
time.sleep(1)
#turn off, set as LOW or 0
GPIO.output(led, GPIO.LOW)
print(“OFF”)
time.sleep(1)
except KeyboardInterrupt:
#cleanup GPIO settings before exiting
GPIO.cleanup()
print(“Exiting...”)
Я вставил ваш код в свой скрипт и светодиод вообще не реагирует! Я даже перезагрузил MajorDoMo и всеравно не работает!
ТОгда я в терминале решил ручками прописать каждую строку кода, что бы узнать на каком этапе "спотыкатеся" код...
Ниже результат.
Код: Выделить всё
pi@raspberrypi:~ $ sudo python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO as GPIO
>>> import time
>>> led = 6
>>> GPIO.setmode(GPIO.BOARD)
>>> GPIO.setup(led, GPIO.OUT,initial=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The channel sent is invalid on a Raspberry Pi
>>>
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Вт май 29, 2018 10:17 pm
Ну, возьмите свой код, когда получалось включить, и допишите:
Код: Выделить всё
import RPi.GPIO as GPIO
from time import sleep
pin=2
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT, initial=1)
print("test initial!")
sleep(1)
GPIO.output(pin, GPIO.LOW)
print("test LOW!")
sleep(1)
GPIO.output(pin,GPIO.HIGH)
print("test HIGH!")
sleep(1)
GPIO.output(pin, 0)
print("test 0!")
sleep(1)
GPIO.output(pin,1)
print("test 1!")
sleep(1)
GPIO.output(pin, False)
print("test False!")
sleep(1)
GPIO.output(pin,True)
print("test True!")
sleep(1)
GPIO.cleanup()
print("CleanUp!")
и посмотрите, как будет реагировать лед
-
xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
289 раз
-
Поблагодарили:
633 раза
Сообщение
xor » Вт май 29, 2018 10:45 pm
Код выше просто должен доказать вашу власть над пином, настроенным на вывод.
Если вам удалось его перевести в 1, убедитесь и в обратном.
Возвращаясь к коду установки в 0 в первом посте --
А комментить cleanup не пробовали?
ps. построчно проверять программу с циклом и метками переходов -- плохая идея
-
zoldaten
- Сообщения: 158
- Зарегистрирован: Вт авг 23, 2016 3:08 pm
- Откуда: Москва
-
Благодарил (а):
5 раз
-
Поблагодарили:
22 раза
-
Контактная информация:
Сообщение
zoldaten » Ср май 30, 2018 6:20 pm
Yashalta писал(а): ↑Пт май 25, 2018 9:19 pm
Sapizdullin писал(а): ↑Пт май 25, 2018 9:11 pm
Подтяни пин к земле через 4,7 КОм...
Не понял, сейчас у меня стоит резистор на 220 Ом, мне его нужно заменить на 4,7 КОМ или мне нужно добавть резистор 4,7 КОМ еще куда то?
ничего там подтягивать дополнительно не надо. просто ограничивающий резистор должен быть от 470 Ом.
почитайте С. Монк "Мейкерство. Arduino и Raspberry Pi. Управление движением, светом и звуком".
Raspberry pi3 на X820 с собственного образа MJD, broadlink rm mini3, sonoff basic, самодельные погодные станции и wi-fi розетки на esp8266 esp-01.физический robot-дворецкий.