Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Částečně fungující Raspberry Pi Pico *vyřešeno*

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: čt únor 09 2023, 11:43    Předmět: Částečně fungující Raspberry Pi Pico *vyřešeno* Citovat

Mám Raspberry Pi Pico a k němu program pojmenovaný main.py. Ten jsem nahrál tak, jak se všude píše. Stiskl jsem tlačítko, Pi se připojilo jako další disk a do něj jsem nakopíroval program.
Ledka blikne každých 10 sekund, kdy se posílá signál pro krokový motor, který se správně pootočí. Jenže další část programu nefunguje. GPIO 20 a 21 by mělo být podle programu HIGH, ale je na zemi a tlačítka nefungují.
Mohla by mě nějaká dobrá duše poradit, jak to rozběhat celé?
citace:
# micropython program for the hollow-clock4
# https://www.thingiverse.com/thing:5636482
# for the rasperry pi pico
# V1.1 01.05.2023
# modified software based on pico sw from hollow clock2 author macke01
# (https://www.thingiverse.com/thing:4840471)
# timing modified for Hollow Clock 4
# simplified time setting by addition of slow/fast forward and backward time set buttons
# simplified code, time base adjustment found unecessary with pi pico cpu clock
# reordered I/O assignment
# To syncronize hands - set hour and minute hands to 12 oclock by adjusting the minute & hour gears
# then place into base and adjust to correct time with time setting buttons
# If clock runs backwards, jumper Pi Pico pins 32 - 33 (GPIO27 - GND)

import utime
from machine import Pin

pin25=Pin(25,Pin.OUT)
pin25.value(0)

seq = [
[ 0, 1, 1, 0],
[ 0, 0, 1, 0],
[ 0, 0, 1, 1],
[ 0, 0, 0, 1],
[ 1, 0, 0, 1],
[ 1, 0, 0, 0],
[ 1, 1, 0, 0],
[ 0, 1, 0, 0]
]

class global_values:
# Constants
STEPS_PER_15MINUTES = 7680 # steps of a single revolution of motor gains 15 min.
STEPS_PER_MINUTE = int(STEPS_PER_15MINUTES/15)
STEPS_PER_5MINUTES = int(STEPS_PER_15MINUTES/3)
STEPS_PER_HOUR = STEPS_PER_15MINUTES * 4

def __init__(self):
# define and init move constants
self.STEPS_PER_MOVE = 32 # 32 steps per move
self.MOVES_PER_HOUR = self.STEPS_PER_15MINUTES * 4 / self.STEPS_PER_MOVE
self.PAUSE_BEWEEN_MOVES_MSEC = 60000*60 / self.MOVES_PER_HOUR
self.next_msec = utime.ticks_ms() + self.PAUSE_BEWEEN_MOVES_MSEC

# define and init variables
self.last_move_msec = utime.ticks_ms()
self.delaytime = 20 # wait between phases of stepper = smoothness
self.direction = 0 # direction of movement
self.prev_sec_msec = utime.ticks_ms()

def steps_per_move(self, steps):
# sets values depending on the steps per move
n = int(steps)
self.STEPS_PER_MOVE = n
self.MOVES_PER_HOUR = self.STEPS_PER_15MINUTES * 4 / self.STEPS_PER_MOVE
self.PAUSE_BEWEEN_MOVES_MSEC = 60000*60 / self.MOVES_PER_HOUR

G=global_values()

# pins assignment
pin1 = Pin(6,Pin.OUT) # Pico GPIO6 (Pin 9) connected to stepper control Pin In1
pin2 = Pin(7,Pin.OUT) # Pico GPIO7 (Pin 10) connected to stepper control Pin In2
pin3 = Pin(8,Pin.OUT) # Pico GPIO8 (Pin 11) connected to stepper control Pin In3
pin4 = Pin(9,Pin.OUT) # Pico GPIO9 (Pin 12) connected to stepper control Pin In4

# pins cause action when pulled down
pin_ffwd = Pin(20,Pin.IN, Pin.PULL_UP) # time set button fast forward GPIO20 (Pin 26)
pin_fbwd = Pin(21,Pin.IN, Pin.PULL_UP) # time set button fast backward GPIO21 (Pin 27)
pin_toggle_dir = Pin(27,Pin.IN, Pin.PULL_UP) # change clock run direction GPIO27 (Pin 32)

# phase and direction definition
pins_fwd = [pin1,pin2,pin3,pin4]
pins_bwd = [pin4,pin3,pin2,pin1]
pins_dir = [pins_fwd,pins_bwd]
pins = pins_dir[G.direction] #pins = [pin4,pin3,pin2,pin1] for forward movement

steps = [
[pin1],
[pin1,pin2],
[pin2],
[pin2,pin3],
[pin3],
[pin3,pin4],
[pin4],
[pin4,pin1],
]

def toggle_dir():
global pins, pins_dir
G.direction = (G.direction + 1) % 2
pins = pins_dir[G.direction]

def move(steps):
global pins
phase = 0

for j in range(steps):
phase = (phase + 1) % 8
for i in range(4):
pins[i].value(seq[phase][i])
pin25.value(seq[phase][i]) # Pico Led flashing.
utime.sleep_ms(G.delaytime)
# power cut
for i in range (4):
pins[i].value(0)
pin25.value(0) # Pico led off

# reverse stepper direction if needed - jumper pins 32 -33 on pico
if pin_toggle_dir.value() == 1:
toggle_dir()


while True:
# time set routine
fwd_flag = True # by default forward direction
t_button = utime.ticks_ms() # capture initial time to determine setting button press duration
while (pin_ffwd.value() ^ pin_fbwd.value()): # if only one button pushed
if (utime.ticks_ms() - t_button) < 500: # button press less than 500 ms
G.delaytime = 5 # then semi fast rotation
else:
G.delaytime = 1 # very fast rotation
# by default move forward continously as long as a setting button is pushed
# otherwise check fast backward button
if pin_fbwd.value() == 0: # move backward continously as long as pin is pulled down
if fwd_flag:
toggle_dir() # reverse direction
fwd_flag = False # flag reverse direction
move(20)
if not (fwd_flag): # if previous command reverse direction
toggle_dir() # then restore
G.delaytime = 20 # resume

#main clock timing code
msec = utime.ticks_ms()
timediff = utime.ticks_diff(msec, G.last_move_msec)
# utime.ticks_diff cares about wrapping of msec values internally
# so we must not care about value wrapping
if timediff > G.PAUSE_BEWEEN_MOVES_MSEC:
# time since last move has passed
move(G.STEPS_PER_MOVE)
# set pause until next move
G.last_move_msec = utime.ticks_add(G.last_move_msec, int(G.PAUSE_BEWEEN_MOVES_MSEC))

_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.


Naposledy upravil hafca dne ne únor 12 2023, 19:47, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
samec



Založen: Dec 19, 2017
Příspěvky: 4134

PříspěvekZaslal: čt únor 09 2023, 14:09    Předmět: Citovat

Tlačitka sú mikrospínače? Máš zapojenú správnu dvojicu kontaktov?

Namiesto citace použi code, nech je vidieť štruktúru programu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: čt únor 09 2023, 14:19    Předmět: Citovat

Zkoušel jsem to dotykem kablíku proti zem přímo na modulu. Tam asi chyba nebude.
_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
samec



Založen: Dec 19, 2017
Příspěvky: 4134

PříspěvekZaslal: čt únor 09 2023, 15:35    Předmět: Citovat

Skúšal si pin 20/21, alebo GPIO 20/21?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: čt únor 09 2023, 15:50    Předmět: Citovat

Obojí. Měřil jsem napětí na všech pinech a žádný z GPIO není na HIGH. Mimo těch čtyřech co mají na starosti motor. Tam se to střídá jak má. Zkusil jsem přidat další piny k těm co nejdou, ale nic. Pořád jen LOW.
_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
samec



Založen: Dec 19, 2017
Příspěvky: 4134

PříspěvekZaslal: čt únor 09 2023, 17:05    Předmět: Citovat

Akú máš verziu micropythonu?
https://docs.micropython.org/en/latest/library/machine.Pin.html
citace:
This is the documentation for the latest development branch of MicroPython and may refer to features that are not available in released versions.

If you are looking for the documentation for a specific release, use the drop-down menu on the left and select the desired version.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: čt únor 09 2023, 17:10    Předmět: Citovat

V souboru INFO_UF2 je tohle

citace:
UF2 Bootloader v2.0
Model: Raspberry Pi RP2
Board-ID: RPI-RP2

_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
samec



Založen: Dec 19, 2017
Příspěvky: 4134

PříspěvekZaslal: čt únor 09 2023, 17:56    Předmět: Citovat

na stránke https://docs.micropython.org/en/latest/library/machine.Pin.html
vľavo dole je zoznam verzií
kód:
Versions
v1.4.4   v1.4.5   v1.4.6   v1.5   
v1.5.1   v1.5.2   v1.6   v1.7   v1.8   
v1.8.1   v1.8.2   v1.8.3   v1.8.4   
v1.8.5   v1.8.6   v1.8.7   v1.9   
v1.9.1   v1.9.2   v1.9.3   v1.9.4   
v1.10   v1.11   v1.12   v1.13   v1.14   
v1.15   v1.16   v1.17   v1.18   
v1.19.1   latest


a v tejto dokumentácií https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-python-sdk.pdf
na strane 6 je ukážka info z nejakého firmware
kód:
$ picotool info -a build-PICO/firmware.uf2
File build-PICO/firmware.uf2:

Program Information
 name:            MicroPython
 version:         v1.18-412-g965747bd9   <<<-------------- TOTO TU !!!!!!!!
 features:        USB REPL
                  thread support
 frozen modules:  _boot, rp2, _boot_fat, ds18x20, onewire, dht, uasyncio,
                  uasyncio/core, uasyncio/event, uasyncio/funcs, uasyncio/lock,
                  uasyncio/stream, neopixel
 binary start:    0x10000000
 binary end:      0x1004ba24
 embedded drive:  0x100a0000-0x10200000 (1408K): MicroPython

Fixed Pin Information
 none

Build Information
 sdk version:       1.3.0
 pico_board:        pico
 boot2_name:        boot2_w25q080
 build date:        May 4 2022
 build attributes:  MinSizeRel

Takže verzia bootloaderu 2.0 je asi niečo iné.

Ja také módne výstrelky, ako je python, nemám rád. Takže viac sa v tých verziách nemienim vrtať. Akú verziu pythonu používaš a ako sa v nej nastavuje pull up si budeš musieť zistiť sám.

Keby si programoval v Céčku, už by si to mal hotové. Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: čt únor 09 2023, 18:27    Předmět: Citovat

Zkoušel jsem tam rp2-pico-20220618-v1.19.1.uf2 i straší verzi rp2-pico-20210202-v1.14.uf2, ale je to stejné.
Céčko se už asi nenaučím, jsem rád, že dokážu pár věcí v Arduinu.

_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
hafca



Založen: Jul 27, 2004
Příspěvky: 4486
Bydliště: 25km na západ od Prahy

PříspěvekZaslal: ne únor 12 2023, 19:46    Předmět: Citovat

Nakonec byla jako vždy chyba mezi židlí a klávesnicí. Ale jen napůl.
Všude se psalo připjit se stisknutým tlačítkem a nahrát main.py. Jenže NIKDE nebylo napsáno, že se to musí nahrát přes Thonny. Jinak se ten program se do PI neuloží.

_________________
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund