Теперь вот пытаю Питон, в плату залился, диск стартует, изменять код там можно, библиотеки закидывать тоже, осталось какой нибудь тест туда закинуть, чтобы понять как и что и, далее видимо с языком знакомиться )))
Подключился терминалом, первые осмысленные сообщения пошли:
Подтяжка на выводах DSA и SCL не обнаружена, проверь схему подключения
(это я скетч с am2320 нашел)
Странно !!! Я тоже качал не BETA версию - моргает без вопросов и загрузки библиотек.
boot_out.txt
Adafruit CircuitPython 7.3.2 on 2022-07-20; Raspberry Pi Pico with rp2040
Board ID:raspberry_pi_pico
у простых людей простые неисправности у сложных - сложные, это я о себе, плата была на этом жеж чипе только от adafruit )))
Всё заработало!!!
Благодарю!!!
Ищи другой board - тот что по умолчанию МИНИМАЛИСТИЧЕН !
то-есть поднять SPI, I2C и т.д. всё что заявлено для этого процессора в Питоне нереально?
Да, с синглтонами на эту плату не АЙС, решение вроде есть, будем пробовать, посмотреть распиновку можно таким кодом:
# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""CircuitPython Essentials Pin Map Script"""
import microcontroller
import board
board_pins = []
for pin in dir(microcontroller.pin):
if isinstance(getattr(microcontroller.pin, pin), microcontroller.Pin):
pins = []
for alias in dir(board):
if getattr(board, alias) is getattr(microcontroller.pin, pin):
pins.append("board.{}".format(alias))
if len(pins) > 0:
board_pins.append(" ".join(pins))
for pins in sorted(board_pins):
print(pins)
Приехали и мои платы. Та что на 4 мб - при старте без скетча переключает цвета на Neopixel и потом моргает на 25 пине. Та что на 16 мб - просто включает Neopixel в синий цвет.
Это поведение заложено в загрузчик ? На флешках в режиме загрузчика никаких файлов .uf2 нет ...
Неопиксели некоторые горят синим, когда они не инициализированы, а питание подано. Скорее всего по умолчанию его просто никто не погасил
Дисплей заработал,пришлось пины поправить, код исправил на рабочий в посте выше, кстати, теперь всё что отображается в консоли гонит и на экран )))
непривычно однако
Добавил тестирование цвета, в моём дисплее цвета не инверсные, строка 63 скетча что ниже
чуток расширил тест:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This test will initialize the display using displayio and draw a solid green
background, a smaller purple rectangle, and some yellow text.
"""
"""
// код для дисплея (TFT_GO) ESP8266
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <SPI.h>
#define TFT_CS D0
#define TFT_RST D3
#define TFT_DC D4
#define TFT_SCK D5 //HSPI SCK
#define TFT_SDA D7 //HSPI MOSI
#define TFT_LED D8 //HSPI CS
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// для RP2040
#define TFT_CS GP5 - CS
#define TFT_RST GP6 - RESET
#define TFT_DC GP7 - A0
#define TFT_SCK GP2 - SCK
#define TFT_SDA GP3 - SDA (MOSI, TX)
#define TFT_LED Vout
#define TFT_VCC 3V3 - 3V3
#define TFT_GND GND - GND
"""
import time
import gc
import board
import busio
import terminalio
import displayio
from adafruit_display_text import label
from adafruit_display_shapes.circle import Circle
from adafruit_st7735r import ST7735R
# Release any resources currently in use for the displays
displayio.release_displays()
#I2C строка 19 // busio.I2C(SCL,SDA)
#i2c = busio.I2C(board.GP13, board.GP12)
# UART //busio.UART1(board.(TX), board.(RX))
uart1 = busio.UART(board.GP12, board.GP13)
# spi = board.SPI() // busio.SPI(SCK, TX(MOSI), RX(MISO))
spi = busio.SPI(board.GP2, board.GP3, board.GP4)
tft_cs = board.GP5
tft_rst = board.GP6
tft_dc = board.GP7
tft_lcd = board.GP8
display_bus = displayio.FourWire(
spi, command=tft_dc, chip_select=tft_cs, reset=tft_rst
)
display = ST7735R(display_bus, width=160, height=128, rotation=90, bgr=True)
# Make the display context
splash = displayio.Group()
display.show(splash)
color_bitmap = displayio.Bitmap(160, 128, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x00FF00 # Bright Green
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)
# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(150, 118, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0xAA0088 # Purple
inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=5, y=5)
splash.append(inner_sprite)
# Draw a label
text_group = displayio.Group(scale=2, x=11, y=64)
text = "Hello World!"
text_area = label.Label(terminalio.FONT, text=text, color=0xFFFF00)
text_group.append(text_area) # Subgroup for text scaling
splash.append(text_group)
time.sleep(5)
# Make the display context
splash = displayio.Group()
display.show(splash)
color_bitmap = displayio.Bitmap(160, 80, 1)
color_palette = displayio.Palette(1)
# write some text in each font color, rgb, cmyk
color_palette[0] = 0x111111 # light grey
text_group_left = displayio.Group(scale=1, x=0, y=6)
text_area_red = label.Label(terminalio.FONT, text="RED", color=0xFF0000)
text_area_green = label.Label(terminalio.FONT, text="\nGREEN", color=0x00FF00)
text_area_blue = label.Label(terminalio.FONT, text="\n\nBLUE", color=0x0000FF)
text_area_white = label.Label(terminalio.FONT, text="\n\n\nWHITE", color=0xFFFFFF)
text_group_left.append(text_area_red)
text_group_left.append(text_area_green)
text_group_left.append(text_area_blue)
text_group_left.append(text_area_white)
splash.append(text_group_left)
text_group_right = displayio.Group(scale=1, x=80, y=6)
text_area_cyan = label.Label(terminalio.FONT, text="CYAN", color=0x00FFFF)
text_group_right.append(text_area_cyan)
text_area_magenta = label.Label(terminalio.FONT, text="\nMAGENTA", color=0xFF00FF)
text_group_right.append(text_area_magenta)
text_area_yellow = label.Label(terminalio.FONT, text="\n\nYELLOW", color=0xFFFF00)
text_group_right.append(text_area_yellow)
text_area_black = label.Label(terminalio.FONT, text="\n\n\nBLACK", color=0x000000)
text_group_right.append(text_area_black)
splash.append(text_group_right)
time.sleep(5)
# Make the display context
main_group = displayio.Group()
# Make a background color fill
color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
main_group.append(bg_sprite)
# Setting up the Circle starting position
posx = 50
posy = 50
# Define Circle characteristics
circle_radius = 20
circle = Circle(posx, posy, circle_radius, fill=0x00FF00, outline=0xFF00FF)
main_group.append(circle)
# Define Circle Animation Steps
delta_x = 2
delta_y = 2
# Showing the items on the screen
display.show(main_group)
while True:
if circle.y + circle_radius >= display.height - circle_radius:
delta_y = -1
if circle.x + circle_radius >= display.width - circle_radius:
delta_x = -1
if circle.x - circle_radius <= 0 - circle_radius:
delta_x = 1
if circle.y - circle_radius <= 0 - circle_radius:
delta_y = 1
circle.x = circle.x + delta_x
circle.y = circle.y + delta_y
time.sleep(0.02)
gc.collect()
# SPDX-FileCopyrightText: Copyright (c) 2021 Jose David M.
#
# SPDX-License-Identifier: Unlicense
"""
Simple test to use the internal led to turn it on and off using morse code
"""
import time
import board
from morsecode import Emitter
# Using Internal led
internal_led = Emitter(board.GP25)
MESSAGE = "Hugo AKA the Architect"
while True:
print(f"Sending {MESSAGE} to the internal led in 3 seconds")
time.sleep(3)
print("starting")
internal_led.outmorse(MESSAGE)
print("Message Ended")
А чего её выносить? Язык и язык. Более современный, чем С++, имеет больше вкусняшек, но идейно - такой же.
я тут пытаюсь с микропитоном разобраться, что-то не пойму, как саму программу на питоне внутрь залить, из командной строки функции отрабатывают, а дальше что??? непонятки
Разобрался и с microPython!
1. Устанавливаем IDE Thonny (sudo apt install thonny)
2. Устанавливаем micropython (sudo apt install micropython)
3. я еще какие-то плагины добавил отсюда
4. Запускаем Thonny, выбираем язык, далее Инструменты-интерпретатор - MicroPython (Rasberry Pi Pico)
5. Выбираем порт - Board in FS Mode Board CDC (/dev/ttyACM0)
Нажатие кнопки запустить текущий скрипт запускает его на выполнение...
Файл - сохранить как - можно выбрать сохранить локально или загрузить в железку
ЗЫ пока не разобрался как обеспечить автозапуск программы при пропадании питания или нажатия кнопки сброс - имя
программы должно быть main.py )))
Thonny можно пользоваться и для загрузки в железку под CircuitPython
(открываем файл на редактирование и просто сохраняем)
Молодец Сережа! Питон - это острие современного программирования. Недаром вся "БигДата" пишется только на Питоне. Что бы ни писал г-н Лилитко, но Питон совсем не тоже самое, что С++. Типизация иная. И, что самое важное, ОЧЕНЬ развитые средства функционального программирования! С ДжаваСкриптом можно сравнить разве что. Можно ли имитировать ФП на С++? Да конечно можно. На нем все написать можно. Но совсем иное, когда итераторы и генераторы являются синтаксической частью языка.
Поразгонял процессор! На 300 мегагерцах интерпретатор свалился, но программа продолжала выполняться. (консоль стала недоступна)
Восстанавливается перезагрузкой microPython...
Тебе не 14 лет! На фиг это не нужно, вредно и не профессионально.
пишут что можно до 400 гнать, при этом позиционируется 133 при технологии 40 нанометров, не маловато ли?
Ощутимого нагрева не заметил, тепловизором не смотрел...
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Ой-ли!
Пентиум - суперскалярная архитектура. Насколько я помню, ARM по производительности на такт уступает даже 386 (заметно превосходя по производительности на Ватт). А у Пентиума - еще FPU.
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Ой-ли!
Пентиум - суперскалярная архитектура. Насколько я помню, ARM по производительности на такт уступает даже 386 (заметно превосходя по производительности на Ватт). А у Пентиума - еще FPU.
Молодец Сережа! Питон - это острие современного программирования. Недаром вся "БигДата" пишется только на Питоне.
бигдата ладно, на ардуине это не очень актуально. А вот с доступом к железу у него как? По мне раз SDK написано на Си++ - значит все остальное работает через "посредника". То есть дергать регистры из питона это все равно что работать через digitalWrite() - удобно и переносимо, но в сотни раз медленеее прямого доступа
Дак я и дал
получилось!
Теперь вот пытаю Питон, в плату залился, диск стартует, изменять код там можно, библиотеки закидывать тоже, осталось какой нибудь тест туда закинуть, чтобы понять как и что и, далее видимо с языком знакомиться )))
Подключился терминалом, первые осмысленные сообщения пошли:
Подтяжка на выводах DSA и SCL не обнаружена, проверь схему подключения
(это я скетч с am2320 нашел)
для черных плат с WS2812 на пине 23
строка 7, объект module не имеет аттрибута GP23
Я под CIRCUIT Python писал ...
Я под CIRCUIT Python писал ...
я его и залил, версия 7.3.2
Странно !!! Я тоже качал не BETA версию - моргает без вопросов и загрузки библиотек.
Странно !!! Я тоже качал не BETA версию - моргает без вопросов и загрузки библиотек.
у простых людей простые неисправности у сложных - сложные, это я о себе, плата была на этом жеж чипе только от adafruit )))
Всё заработало!!!
Благодарю!!!
кстати, цикл вешает вывод в компорт однако
Запущенная программа вешает. Ctrl-C развешивает.
А эти драйвера как ставить?
Смотрю пример подключения дисплея, пины не соответствуют нашей плате, то-есть все примеры придётся править?
не вижу ни I2C ни SPI и т.д. и как это понимать?
Обзови в коде SPI = GP20 (GP20 для примера) и пользуй хоть в хвост хоть в гриву ...
В коде выше видимо какой то другой модуль board...
Обзови в коде SPI = GP20 (GP20 для примера) и пользуй хоть в хвост хоть в гриву ...
так не взлетает:
Ищи другой board - тот что по умолчанию МИНИМАЛИСТИЧЕН !
Ищи другой board - тот что по умолчанию МИНИМАЛИСТИЧЕН !
то-есть поднять SPI, I2C и т.д. всё что заявлено для этого процессора в Питоне нереально?
Да, с синглтонами на эту плату не АЙС, решение вроде есть, будем пробовать, посмотреть распиновку можно таким кодом:
Приехали и мои платы. Та что на 4 мб - при старте без скетча переключает цвета на Neopixel и потом моргает на 25 пине. Та что на 16 мб - просто включает Neopixel в синий цвет.
Это поведение заложено в загрузчик ? На флешках в режиме загрузчика никаких файлов .uf2 нет ...
Неопиксели некоторые горят синим, когда они не инициализированы, а питание подано. Скорее всего по умолчанию его просто никто не погасил
"на третий день глаз стал потихоньку открываться" из народного фольклора
Завелся дисплей ?
Завелся дисплей ?
Дисплей заработал,пришлось пины поправить, код исправил на рабочий в посте выше, кстати, теперь всё что отображается в консоли гонит и на экран )))
непривычно однако
Добавил тестирование цвета, в моём дисплее цвета не инверсные, строка 63 скетча что ниже
чуток расширил тест:
сканер I2C тогда будет выглядеть так:
Есть и библиотека для передачи кодом морзе:
Два ядра ARM Cortex-M0+ с тактовой частотой 133 МГц (с возможностью разгона до более чем 400 МГц)
тему программирования на Питоне видимо желательно вынести отдельно, а то разрастётся жеж?
А чего её выносить? Язык и язык. Более современный, чем С++, имеет больше вкусняшек, но идейно - такой же.
Есть ли в этом встраиваемом питоне пошаговый отладчик? Если нет, то он нафиг не нужен.
А чего её выносить? Язык и язык. Более современный, чем С++, имеет больше вкусняшек, но идейно - такой же.
я тут пытаюсь с микропитоном разобраться, что-то не пойму, как саму программу на питоне внутрь залить, из командной строки функции отрабатывают, а дальше что??? непонятки
Тут пишут кое-что о микропитоне.
Тут пишут кое-что о микропитоне.
для начинающих CircuitPython будет попроще однако, а вот микропитон как-то глянулся как более близкий к С++
Встроенные модули:
>>> help("modules")
__future__ board onewireio touchio
__main__ builtins os traceback
_asyncio busio paralleldisplay ulab
_bleio collections pulseio ulab
_eve countio pwmio ulab.fft
adafruit_bus_device digitalio qrio ulab.linalg
adafruit_bus_device.i2c_device displayio rainbowio ulab.numpy
adafruit_bus_device.spi_device errno random ulab.scipy
adafruit_pixelbuf floppyio re ulab.scipy.linalg
aesio fontio rgbmatrix ulab.scipy.optimize
alarm framebufferio rotaryio ulab.scipy.signal
analogio gc rp2pio ulab.scipy.special
array getpass rtc ulab.utils
atexit gifio sdcardio usb_cdc
audiobusio imagecapture select usb_hid
audiocore io sharpdisplay usb_midi
audiomixer json storage uselect
audiomp3 keypad struct vectorio
audiopwmio math supervisor watchdog
binascii microcontroller synthio zlib
bitbangio micropython sys
bitmaptools msgpack terminalio
bitops neopixel_write time
Plus any modules on the filesystem
Распиновка:
Разобрался и с microPython!
1. Устанавливаем IDE Thonny (sudo apt install thonny)
2. Устанавливаем micropython (sudo apt install micropython)
3. я еще какие-то плагины добавил отсюда
4. Запускаем Thonny, выбираем язык, далее Инструменты-интерпретатор - MicroPython (Rasberry Pi Pico)
5. Выбираем порт - Board in FS Mode Board CDC (/dev/ttyACM0)
Нажатие кнопки запустить текущий скрипт запускает его на выполнение...
Файл - сохранить как - можно выбрать сохранить локально или загрузить в железку
ЗЫ
пока не разобралсякак обеспечить автозапуск программы при пропадании питания или нажатия кнопки сброс - имяпрограммы должно быть main.py )))
Thonny можно пользоваться и для загрузки в железку под CircuitPython
(открываем файл на редактирование и просто сохраняем)
PS монитор порта прямо в редакторе, удобно однако
Молодец Сережа! Питон - это острие современного программирования. Недаром вся "БигДата" пишется только на Питоне. Что бы ни писал г-н Лилитко, но Питон совсем не тоже самое, что С++. Типизация иная. И, что самое важное, ОЧЕНЬ развитые средства функционального программирования! С ДжаваСкриптом можно сравнить разве что. Можно ли имитировать ФП на С++? Да конечно можно. На нем все написать можно. Но совсем иное, когда итераторы и генераторы являются синтаксической частью языка.
Поразгонял процессор!
На 300 мегагерцах интерпретатор свалился, но программа продолжала выполняться. (консоль стала недоступна)
Восстанавливается перезагрузкой microPython...
по умолчанию частота 125 мегагерц
Поразгонял процессор!
Тебе не 14 лет! На фиг это не нужно, вредно и не профессионально.
Поразгонял процессор!
Тебе не 14 лет! На фиг это не нужно, вредно и не профессионально.
пишут что можно до 400 гнать, при этом позиционируется 133 при технологии 40 нанометров, не маловато ли?
Ощутимого нагрева не заметил, тепловизором не смотрел...
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Пентиум - суперскалярная архитектура. Насколько я помню, ARM по производительности на такт уступает даже 386 (заметно превосходя по производительности на Ватт). А у Пентиума - еще FPU.
Доступны вставки на ассембрере...то-есть "двухядерный Пентиум-133", в ассемблерном коде это же просто монстр...я так щетаю...
Пентиум - суперскалярная архитектура. Насколько я помню, ARM по производительности на такт уступает даже 386 (заметно превосходя по производительности на Ватт). А у Пентиума - еще FPU.
эмулятор какого-нибудь Z80 в лёгкую жеж?
Z80, если мне не изменяет память, это 3.5 МГц при 8 разрядах и отсутствии даже аппаратного умножения.
Z80 https://pikabu.ru/story/yemulyator_zx_sectrum_na_rp2040_9251005
Z80 https://pikabu.ru/story/yemulyator_zx_sectrum_na_rp2040_9251005
я то по наитию, а тут всамделе )))
весь эмулятор всего 264 килобайта кстати
Z80 https://pikabu.ru/story/yemulyator_zx_sectrum_na_rp2040_9251005
Слезу пробил. :)
Z80 https://pikabu.ru/story/yemulyator_zx_sectrum_na_rp2040_9251005
Слезу пробил. :)
у меня лежит на столе еще один неоконченный роман, из набора, кнопки там были резиновые, чи допаять?
При работе на 252 МГц - гоняют два DVI монитора битбандингом !
Молодец Сережа! Питон - это острие современного программирования. Недаром вся "БигДата" пишется только на Питоне.
бигдата ладно, на ардуине это не очень актуально. А вот с доступом к железу у него как? По мне раз SDK написано на Си++ - значит все остальное работает через "посредника". То есть дергать регистры из питона это все равно что работать через digitalWrite() - удобно и переносимо, но в сотни раз медленеее прямого доступа
вся "БигДата" пишется только на Питоне
На первом месте в Big Data язык R. Это не умаляет достоинств питона, просто факт.
вся "БигДата" пишется только на Питоне
На первом месте в Big Data язык R. Это не умаляет достоинств питона, просто факт.
что мне позывной теперь менять на Rа? ну уж нет )))
PS Евгений Петрович! Пора внука привлекать поднимать тему...
RTC проверил, через полдня после отключения часики идут нормально, что там за батарейка такая???
Запустил дисплей ST7735 и под microPython, код ниже:
ЗЫ SPI c этим дисплеем работает на скорости до 60 мегагерц на шине
HC-SR04 и ST7735, тестовый скетч:
Библиотеки:
ST7735
sysfont.py
ну все, пропала ветка