здравствуйте уважаемые форумчане сайта. хочу у вас попросить помощи, кому не сложно и не жалко уделить немного времени. просьба вот какая. есть у меня вот такая игрушка сделанная мною по описанию из интернета,я ее собрала как пробный вариант, работает. но появилось желание ее сделать на модуле ESP32WROWER-1B, у модуля скорость SPI побольше и памяти тоже побольше. так как на Atmega328 имеется небольшое программное заедание при проталкивании данных и получается небольшое двоение кадра и подергивание. вот и появилась идея глобус сделать маленьким на мелких светодиодиках, а Atmega328 заменить наESP32WROWER-1B. уж очень мне понравилась эта игрушка и к ней написана программа в которой можно на него рисовать картинки. очень красиво получается. разобравшись как устроен скетч я многое поняла, а вот при попытке изменить на ESP32 выдает ошибку. помогите пожалуйста или подскажите как исправить эти ошибки что бы было правильно. как я поняла в нем не подключена изначально библиотека SPI для экономии места, а все организовано через регистр SPCR = B01010000; для АТМЕГА328 и ESP32 вариант записи одинаков,нашла в интернете. но при компиляции он выдает ошибку для платы ESP32WROWER-1B все файлы прикладываю. буду рада если кто откликнется и поможет. больше ни каких доработок вносить не надо. все что прошу это изменить плату с АТМЕГА на ESP32. в ESP32 функцию WIFI задействовать не надо и никакого функционала тоже добавлять не надо. все как есть только плату заменить наESP32 и все. просто адаптировать с одной платы на другую. пины я
использую для ESP32 такие-SPI-(MOSI/IO23-74hc595/14, SCK/IO18-74hc595/11, RCK/IO26-74hc595/12, FOTO DIODE/IO33. немного о себе монтажница РЭАиП на заводе, я частное лицо, денег на всяких проектах не зарабатываю. уроков не даю. ничего не продаю, просто понравилась игрушка и яее сделала, посмотрела и решила немного модернизировать. больше ничего с нее не прошу. 2 скетч это исходный код. он с атмегой работает. а вот 1 при смене платы выдает ошибку. помогите пожалуйста, очень хочется сделать .
//############################################################################################################################################################
//Externe Bibliotheken einbinden//интегрировать внешние библиотеки
//############################################################################################################################################################
#include <pgmspace.h>//<avr/pgmspace.h>
//############################################################################################################################################################
//Programmspeicher beschreiben//написать програмную память
//############################################################################################################################################################
//Bild_01 (Globus)//земля
const byte bild_01[] PROGMEM=
{
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10101010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10101000, B00000000, B00000000, B00000010, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000,
B00000010, B10100010, B10101010, B00000000, B00000000, B00000010, B00000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000010, B00000010, B10000000, B10000000, B00000000, B00001000, B00000000, B00000000, B00100000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00001000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00001000, B00000010, B10100000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101110, B10100010, B10101010, B10100000, B00000000, B00000010, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101110, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B00000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B00000000, B10000000, B00000000, B00100001, B00000000, B00000000, B00000000, B00000000,
B00101111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00100001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B10000000, B10000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B10101010, B00000000, B00000000, B00000000, B00000000, B10000010, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B10101010, B00000000, B00000000, B00000000, B00001000, B10001010, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B00101000, B00000000, B00000000, B00000000, B00001000, B00100000, B00000000, B00000000, B00000001, B00000000, B00001000, B00000000, B00000000,
B00001111, B10101010, B00100000, B10100000, B00000000, B00000000, B00001010, B00100000, B00000000, B00000000, B00001001, B00000000, B00000000, B10100000, B00000000,
B00001111, B10101010, B00100000, B10100000, B00000000, B00000000, B00001010, B00100000, B00000000, B00000000, B00001001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101010, B10000010, B10100000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00000001, B00000000, B00000010, B00100000, B00000000,
B00101111, B10101010, B10000010, B10000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00100001, B00000000, B00000010, B00000000, B00000000,
B00101111, B10101010, B10000010, B10000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00100000, B00000000, B00000010, B10000000, B00000000,
B00001111, B10101010, B10000000, B00000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101010, B00000000, B00000000, B00000000, B00000000, B00001010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000,
B00001111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00111000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B10111000, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B00111000, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11011010, B00000000, B00000000, B00000000, B00010000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111010, B00000000, B00000000, B00000000, B00010000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11110110, B10000000, B00000000, B00000000, B00010000, B00111110, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11111110, B10000000, B00000000, B00000000, B00000000, B00011101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111110, B10100000, B00000000, B00000000, B00000100, B00011101, B10000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111110, B10100000, B00000000, B00000000, B00000100, B00111101, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11111110, B10100000, B00000000, B00000000, B00010100, B00111111, B00000000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00000000,
B00111111, B11111111, B10000000, B00000000, B00000000, B00010000, B00101111, B00000000, B00000000, B00000000, B00100000, B00000000, B10000000, B00000000, B00000000,
B00111111, B11111111, B01000000, B00000000, B00000000, B00010000, B00101111, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111111, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000101, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00111110, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00111110, B11111010, B10000000, B00000000, B00000000, B00010000, B00101000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00111010, B11111110, B10100000, B00000000, B00000000, B00010000, B10101000, B00000000, B00000000, B00000000, B00000101, B00000100, B00000000, B00000000, B00000000,
B00111010, B11111110, B10110000, B00000000, B00000000, B00010000, B00101000, B00000000, B00000000, B00000000, B00000101, B00000000, B00010000, B00000000, B00000000,
B00111111, B11111110, B10110100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00010000, B00000100, B00000100, B00000000, B00000000,
B00101111, B11111010, B10111100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111010, B10111100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111010, B11111101, B00000001, B00000000, B00000000, B10101000, B00000000, B00000000, B00000000, B00000000, B00010000, B00100000, B00000000, B00000000,
B00101111, B11101010, B11011101, B01000101, B00000000, B00000000, B10101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B01000000, B00000000,
B00101111, B11101010, B11011101, B01010101, B00000000, B00000000, B10100000, B00000000, B01010100, B00000000, B00100000, B00000000, B10000000, B00000000, B00000000,
B00101111, B11101010, B01111101, B01010101, B00000000, B00000000, B10100000, B00000000, B01010100, B00000000, B00100000, B00000000, B01100000, B00000001, B00000000,
B00101111, B11101010, B00111101, B01010100, B00000000, B00000000, B00100000, B00000000, B01010000, B00000000, B00100000, B00000000, B00100000, B00000000, B00000000,
B00101111, B11101010, B00111101, B11110100, B00000000, B00000000, B00100000, B00000000, B00110000, B00000000, B00100000, B01000000, B00100000, B10000100, B00000000,
B00101111, B11101010, B00111101, B11111100, B00000000, B00000000, B00100000, B00000000, B10100000, B00000000, B00100000, B01000010, B00100000, B00001100, B00000000,
B00001111, B11101010, B00111101, B11111000, B00000000, B00000000, B00000000, B00000000, B10101000, B00000000, B00000100, B01000010, B00100000, B00000000, B00000000,
B00001011, B10101000, B00010101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011011, B10101000, B00010101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00010001, B00001000, B00000000, B00000000, B00000000,
B00011010, B10101000, B00000101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00010000, B00001000, B00000000, B00000000, B00000000,
B00011010, B10101000, B00000111, B11110000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010000, B00000000, B00000010, B00000000, B00000000,
B00011010, B10101000, B00000111, B11110000, B00000000, B00010000, B00000000, B00000000, B10100000, B00000000, B00010000, B00000000, B00000010, B00010000, B00000000,
B00011110, B10101000, B00000111, B11100000, B00000000, B00010000, B00000000, B00000001, B10100000, B00000000, B00010100, B00000000, B00000000, B00000000, B00000000,
B00011110, B10101000, B00001111, B11100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00100000, B00001000, B01000000, B00000000,
B00011110, B10101000, B00001111, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00100000, B00001000, B00000000, B00000000,
B00011110, B10101000, B00001111, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00101000, B00000000, B00000000, B00000000,
B00011110, B10100000, B00001011, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00000000, B00000000, B00000000, B00000000,
B00111110, B10100000, B00001011, B10100000, B00000000, B00010100, B00000000, B00000000, B10100000, B00000000, B00110100, B00100000, B00000000, B00000000, B00000000,
B00111110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00110100, B00000000, B00000000, B00000000, B00000000,
B00111110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00110100, B10000000, B00000000, B00000000, B00000000,
B00011110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010100, B10000000, B00000010, B00000000, B00000000,
B00011110, B00000000, B00000010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010100, B00000000, B00000010, B10000000, B00000000,
B00011010, B00000000, B00000000, B10101000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10000000, B00000000,
B00011010, B00000000, B00000000, B10101000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10001000, B00000000,
B00011010, B00000000, B00000000, B10100000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10000000, B00000000,
B00011010, B00000000, B00000000, B00100000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000,
B00011010, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011010, B10000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B10000000, B00000000, B00000000, B00000000,
B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000,
B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000,
B00001010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001110, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000001, B01000000, B00000000, B00000000, B00000000, B00000001, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000001, B01000000, B00000010, B00000000, B00000000, B00000001, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000101, B01000000, B00001010, B00000000, B00000000, B00000101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001010, B00000000,
B00001010, B01000101, B01000000, B00001010, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00001010, B00000000,
B00001010, B01000101, B01000000, B00001010, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00001010, B00000000,
B00001001, B01000101, B01010000, B00001000, B00000000, B00000000, B01000101, B00000000, B00000000, B00000000, B00001000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000101, B01010000, B00001000, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01010001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01010001, B01010000, B00000000, B00000000, B00000000, B01000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000101, B01010101, B01010000, B00000000, B00000000, B00000001, B01000101, B00000000, B00000000, B00000000, B00000100, B00000000, B00010000, B00000000, B00000000,
B00000101, B01000101, B01010000, B00000000, B00000000, B00000001, B01000101, B00000000, B00000000, B00000000, B00000100, B00000000, B00010000, B00000000, B00000000,
B00000101, B01010101, B01010000, B00000000, B00000000, B00000001, B01000101, B01000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000,
B00000101, B01010101, B01010101, B00000000, B00000000, B00000001, B00000101, B01000000, B00000000, B00000000, B00000100, B00000000, B00000100, B00000000, B00000000,
B00000101, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000101, B01010001, B01010101, B01010000, B00000000, B00000000, B00000001, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01010001, B01010101, B01010000, B00000000, B00000000, B00000001, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01000101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01000101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010101, B01010101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010101, B01010101, B01010101, B01010000, B00000000, B00000100, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010101, B01010101, B01010000, B00000000, B00000100, B00000101, B01000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010001, B01010101, B01010000, B00000000, B00000100, B00000001, B01000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010001, B01010101, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00011000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010001, B01010101, B00000000, B00000000, B00000000, B00000001, B00000001, B00000000, B00000000, B00011000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010100, B01010100, B00000000, B00000000, B00000000, B00000100, B00010100, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010100, B01010000, B00000000, B00000000, B00000000, B00000100, B01010000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00000111, B01010101, B00010000, B01000000, B00000000, B00000000, B00010101, B00010000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00000111, B01010101, B00000001, B01000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000,
B00000111, B01010101, B00000001, B01000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010101, B01000001, B01000000, B00000000, B00000000, B00010101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000,
B00010111, B01010101, B01000001, B00000000, B00000000, B00000000, B00010101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B11010101, B00000001, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00010000, B10000000, B00000001, B00000000, B00000000,
B00011111, B11010101, B00000000, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00011000, B10000000, B00000000, B00000000, B00000000,
B00011111, B11010101, B00000000, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11110100, B00000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00010000, B00100000, B00000000, B00000000, B00000000,
B00011111, B11110000, B00000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11100100, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11100100, B00000000, B00000000, B00000000, B00000000, B11111110, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11101101, B00000000, B00000000, B00000000, B00000000, B11111110, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00011111, B11101101, B00000000, B00000000, B00000000, B00001000, B01111110, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111101, B01000000, B00000000, B00000000, B00001000, B00111110, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00011111, B11111101, B01000000, B00000000, B00000000, B00001000, B00011111, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111101, B01010000, B00000000, B00000000, B00001000, B00001111, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00011111, B11111111, B01010000, B00000000, B00000000, B00001000, B00011110, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00011111, B11111111, B01000000, B00000000, B00000000, B00001000, B00010110, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00011111, B11111111, B10000000, B00000000, B00000000, B00001000, B01010110, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111111, B10000000, B00000000, B00000000, B00001000, B01010100, B10000000, B00000000, B00000000, B00000000, B00000011, B00000000, B00000000, B00000000,
B00011111, B11111101, B10000000, B00000000, B00000000, B00001000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00011111, B11111101, B10000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00111111, B11111101, B10000000, B00000000, B00000000, B00100000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00111101, B11111101, B10000000, B00000000, B00000000, B00101000, B01010100, B00000000, B00000000, B00000000, B00000010, B00000001, B00000000, B00000000, B00000000,
B00111101, B11111101, B10000000, B00000000, B00000000, B00101000, B01010100, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B01111101, B11111101, B11000000, B00000000, B00000000, B00100000, B01010100, B00000000, B00000000, B00000000, B01000010, B00000000, B11000000, B00000000, B00000000,
B01111101, B11111101, B01010000, B00000000, B00000000, B00100000, B01010000, B00000000, B00000000, B00000000, B01000010, B00000000, B00010000, B00000000, B00000000,
B01011101, B11111101, B01010000, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B01000010, B00000000, B00000000, B00000000, B00000000,
B00011101, B11111111, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000010, B00000010, B00100010, B00000000, B00000000,
B00011111, B11111101, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00001000, B00100000, B00000000, B00000000,
B00011111, B11111101, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000,
B00011111, B11110101, B11111010, B10000010, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B10000000, B00000000,
B00011111, B11110101, B11111110, B10001010, B00000000, B00000000, B01010000, B00000000, B00001010, B00000000, B00000000, B00100000, B11010100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01010000, B00000000, B00101010, B00000000, B00000000, B00000000, B00010100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00001000, B00000001, B00000100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01000000, B00000000, B10101000, B00000000, B00001000, B00000001, B00000100, B00000010, B00000000,
B00011111, B11010101, B00111110, B11111000, B00000000, B00000000, B01000000, B00000000, B01100000, B00000000, B00001000, B00000001, B00000100, B00010000, B00000000,
B00010111, B11010100, B00111010, B11111000, B00000000, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00110111, B11010100, B00111011, B11111000, B00000000, B00100000, B00000000, B00000000, B01010000, B00000000, B00110000, B00000000, B00000001, B00001000, B00000000,
B00110111, B11010101, B00111011, B11110000, B00000000, B00100000, B00000000, B00000000, B01010000, B00000000, B00110010, B00000100, B00010001, B00000000, B00000000,
B00110101, B11010000, B01101011, B11110000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000000, B00100001, B00010000, B00000000,
B00110101, B01010000, B00001011, B11110000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000000, B00000001, B00010000, B00000000,
B00110101, B01010100, B00000011, B11100000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000100, B00000000, B00000000, B00000000,
B00111101, B01010100, B00000011, B11100000, B00000000, B00100000, B00000000, B00000000, B11000000, B00000000, B00111000, B00010100, B00000000, B00000000, B00000000,
B00111101, B01010100, B00000111, B11110000, B00000000, B00101000, B00000000, B00000000, B11000000, B00000000, B00111000, B00010100, B00000100, B00110000, B00000000,
B00111111, B01010100, B00000111, B11010000, B00000000, B00101000, B00000000, B00000001, B11000000, B00000000, B00111010, B00000100, B00000000, B00010000, B00000000,
B00111111, B01010100, B00010111, B11010000, B00000000, B00101000, B00000000, B00000001, B11000000, B00000000, B00111010, B00000100, B00010000, B00010000, B00000000,
B00111101, B01010000, B00010111, B11010000, B00000000, B00101000, B00000000, B00000011, B01010000, B00000000, B00111000, B00000000, B00010000, B00000000, B00000000,
B00111101, B01010000, B00010101, B11010000, B00000000, B00101000, B00000000, B00000001, B01010000, B00000000, B00111000, B00010000, B00010000, B00000000, B00000000,
B00111101, B01000000, B00010101, B01010000, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00010000, B00000000, B00000000,
B00111101, B01000000, B00000101, B01010000, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B01000000, B00000000, B00000000, B00000000,
B00111101, B00000000, B00000101, B01010100, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00000000, B00000100, B00000000,
B00111101, B00000000, B00000101, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00101000, B00000000, B00000001, B00000100, B00000000,
B00111101, B00000000, B00000100, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00101001, B00000000, B00000000, B00000100, B00000000,
B00111101, B00000000, B00000100, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000100, B00000100, B00000000,
B00111101, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B00000000, B00000000,
B00111101, B00000000, B00000000, B01010000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B00010000, B00000000,
B00111101, B00000000, B00000000, B01000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B01000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00010000,
B00010101, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10000000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10000000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000100, B00000000,
B00010101, B00000010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010100, B10100010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010000, B10000000, B00000000, B00000000, B00000000,
B00000100, B10100010, B10100000, B00010100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00010000, B00000000,
B00000010, B10100010, B10100000, B00000100, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000100, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000
};
//############################################################################################################################################################
//Definitionen und Variablen//определения и переменные
//############################################################################################################################################################
//Definition der Ausgangspins am µ-Controller//определение выходных выводов на микроконтроллер
#define latchPin 26 // Latch-Pin//защелка=12pin_595-10 (для-ESP32Wrower1B=26)
#define PIN_SCK 18 // SPI Clock//SPI часы=11pin_595-13 (для-ESP32Wrower1B=18)
#define PIN_MOSI 23 // SPI Datenausgang//SPI вывод данных=14pin_595-10 (для-ESP32Wrower1B=23)
//#define debug_pin 8 // LED an Pin 8 zum Debuggen//LED на вывод 8 для отладки
#define LS_Pin 33 // Lichtschranke//фотоэлемент-pin3
#define N_O_S 200 // Anzahl Sektoren//количество секторов
#define v_offset 3 // Rotationsgeschwindigkeit des dargestellten Bildes//скорость вращения отображаемого изображения
#define TOL 20 // Toleranz//толерантность
unsigned long sector_time = 20; // Sektorzeit in µs//время сектора в мл/сек
unsigned int counter = 0; // zählt später wieviele Sektoren wärend einer Umdrehung "geschaft" wurden//колличество секторов за 1 оборот
unsigned int pointer = 0; // zeigt später auf die richtige Stelle im Programmspeicher//пожже указывает на правильную позицию в памяти программы
unsigned int offset = 0; // Offset zum Pointer, der für die Drehung des Bildes sorgt//смещение к указателю,который поворачивает изображение
volatile byte LS = 0; // Austauschvariable zwischen Main-Prozedur und Interrupt-Service-Routine (LS = Licht-Schranke)//переменная обмена между основной процедурой и процедурой обработки прерываний (LS=световой барьер)
byte mode = 1; // Modus//режим
unsigned long end_time = 0; // Endzeit eines Modus//время окончания режима
byte flag = 0;
//############################################################################################################################################################
//Setup - Prozedur //процедура настройки
//############################################################################################################################################################
void setup()
{
// Pins auf Ein- oder Ausgang stellen und einen Startwert zuweisen//установите контакты для ввода или вывода и назначьте начальное значение
pinMode(latchPin, OUTPUT);
pinMode(PIN_SCK, OUTPUT);
pinMode(PIN_MOSI, OUTPUT);
// pinMode(debug_pin, OUTPUT);
pinMode(LS_Pin, INPUT);
digitalWrite(latchPin, LOW);
digitalWrite(PIN_SCK, LOW);
digitalWrite(PIN_MOSI, LOW);
// digitalWrite(debug_pin, LOW);
//digitalWrite(PIN_MISO, HIGH); // Internen Pull-Up-Widerstand aktivieren//активировать внутренний подтягивающий резистор
digitalWrite(LS_Pin, HIGH); // Internen Pull-Up-Widerstand aktivieren//активировать внутренний подтягивающий резистор
//SPI Komunikation vorbereiten//подготовьте SPI общение
SPCR = B01010000;
//SPI Control Register (SPCR)//регистор контроля SPI (SPCR)
// | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// | SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |
// SPIE - Enables the SPI interrupt when 1//SPIE - включает SPI прерывание кода
// SPE - Enables the SPI when 1//SPE - включает SPI когда 1
// DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0//DORD - отправляет младший значащий бит данных сначала, когда 1, старший значащий бит первым, когда 0
// MSTR - Sets the Arduino in master mode when 1, slave mode when 0//MSTR - устанавливает Arduino в режим мастер, когда 1, в режиме Slave, когда 0
// CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0//CPOL - устанавливает часы данныхв режим ожидания, когда высокий, если установлено в 1, в режиме ожидания, когда низкий, если в 0
// CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0//CPHA - осуществляет выборку данных по падающему фронту тактовых импульсов данных, когда 1, по ребристому фронту , когда 0
//SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)//SPR1 и SPR0 - устанавливает скорость SPI, 00 самая быстрая (4мГц) 11 самая медленная (250кГц)
SPSR = B00000000; //SPI Status Register auf 0 setzen//установить регистр статуса SPI на 0
//Alle LEDs aus//всё светится
all_leds_off();
//digitalWrite(debug_pin, HIGH);
// Warten bis Motor Nenndrehzahl erreicht hat// время задержки скорости двигателя
for (byte a=0; a<50; a++)
{
while (digitalRead(LS_Pin) == HIGH) {delayMicroseconds(1);}
delay(20);
}
//digitalWrite(debug_pin, LOW);
end_time = millis() + (random(10,20) * 1000);
mode = 1;
//Interrupt vorbereiten//подготовить прерывание
attachInterrupt(1, Erkenne_Flanke, FALLING);
}
//############################################################################################################################################################
//Hauptprogramm//основная программа
//############################################################################################################################################################
void loop()
{
LS = 0;
if (flag == 0)
{
if (counter < (N_O_S)) {sector_time--;}
if (counter > (N_O_S)) {sector_time++;}
}
if (counter == N_O_S) {flag = 1;}
if ((counter < (N_O_S - TOL)) || (counter > (N_O_S + TOL))) {flag = 0;}
if (end_time < millis())
{
end_time = millis() + (random(10,20) * 1000);
flag=0;
mode++;
if (mode == 2) {mode = 1;}
}
counter = 0;
if (offset > (N_O_S - 1)) {offset = 0;}
EnableSPI();
while (LS == 0)
{
if (counter < N_O_S) {pointer = counter;} else {pointer = N_O_S - 1;}
pointer = pointer + offset;
if (pointer > (N_O_S - 1)) {pointer = pointer - N_O_S;}
pointer = pointer * 15;
digitalWrite(latchPin, LOW); // LatchPin erden, damit LEDs nicht schon beim "Durchschieben" blinken//заземлите фиксатор чтобы диоды не мигали
switch (mode)
{
case 1: for (int l=0; l<15; l++){SendRecSPI(pgm_read_byte_near(bild_01 + pointer + l));} // 15 Byte für SR#15 bis SR#1 rausschieben//сдвиньте 15 байтов для SR#15 в SR#1
break;
}
digitalWrite(latchPin, HIGH); // LatchPin auf HIGH setzen und damit alle SR aktivieren//установите фиксатор в положение ВЫСОКИЙ и активируйте все SR
counter++;
unsigned long end_micros = micros() + sector_time;
while ((micros() < end_micros) && (LS == 0)) {} // Warten bis Sektorzeit vorüber ist//дождитесь окончания сектора
}
DisableSPI();
offset = offset + v_offset;
}
//############################################################################################################################################################
//Interrupt-Service-Routine//программа обработки прерываний
//############################################################################################################################################################
void Erkenne_Flanke(void)
{
LS = 1;
}
//############################################################################################################################################################
//Hilfsfunktion zum Aussschalten aller LEDs//вспомогательная функция для отключения всех светодиодов
//############################################################################################################################################################
void all_leds_off(void)
{
EnableSPI();
digitalWrite(latchPin, LOW); // LatchPin erden, damit LEDs nicht schon beim "Durchschieben" blinken//заземлите фиксатор , чтобы светодиоды не мигали при их проталкивании
for (int l=0; l<15; l++){SendRecSPI(0);} // 15 Byte für SR#15 bis SR#1 rausschieben//сдвиньте 15 байтов для SR#15 в SR#1
digitalWrite(latchPin, HIGH); // LatchPin auf HIGH setzen und damit alle SR aktivieren//установите фиксатор в положение ВЫСОКИЙ и активируйте все SR
DisableSPI();
}
//############################################################################################################################################################
// Prozeduren für die SPI//процедуры для SPI
//############################################################################################################################################################
void EnableSPI(void) {SPCR |= 1 << SPE;}//включитьSPI
void DisableSPI(void) {SPCR &= ~(1 << SPE);}//отключитьSPI
void WaitSPIF(void) {while (! (SPSR & (1 << SPIF))) {continue;}}//подождите SPIF
void SendRecSPI(byte Dbyte)//отправить запись SPI
{
SPDR = Dbyte;
WaitSPIF();
return SPDR; //Schiebregister schicken nichts zurück//возвращение SPDR//скользящие регистры ничего неотправляют обратно
}
//############################################################################################################################################################
//Externe Bibliotheken einbinden//интегрировать внешние библиотеки
//############################################################################################################################################################
#include <avr/pgmspace.h>
//############################################################################################################################################################
//Programmspeicher beschreiben//написать програмную память
//############################################################################################################################################################
//Bild_01 (Globus)//земля
const byte bild_01[] PROGMEM=
{
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10101010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000010, B10100010, B10101000, B00000000, B00000000, B00000010, B10000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000,
B00000010, B10100010, B10101010, B00000000, B00000000, B00000010, B00000010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000010, B00000010, B10000000, B10000000, B00000000, B00001000, B00000000, B00000000, B00100000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00000000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00001000, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101010, B10100010, B10101010, B10101000, B00000000, B00001000, B00000010, B10100000, B10100000, B00000000, B00100000, B00000000, B00000000, B00001000, B00000000,
B00101110, B10100010, B10101010, B10100000, B00000000, B00000010, B00000010, B10000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101110, B10100010, B10101010, B10100000, B00000000, B00000000, B00000010, B00000000, B10100000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B00000000, B10000000, B00000000, B00100001, B00000000, B00000000, B00000000, B00000000,
B00101111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00100001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10100010, B10101010, B10000000, B00000000, B00000000, B00000010, B10000000, B10000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B10101010, B00000000, B00000000, B00000000, B00000000, B10000010, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B10101010, B00000000, B00000000, B00000000, B00001000, B10001010, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101000, B00101000, B00000000, B00000000, B00000000, B00001000, B00100000, B00000000, B00000000, B00000001, B00000000, B00001000, B00000000, B00000000,
B00001111, B10101010, B00100000, B10100000, B00000000, B00000000, B00001010, B00100000, B00000000, B00000000, B00001001, B00000000, B00000000, B10100000, B00000000,
B00001111, B10101010, B00100000, B10100000, B00000000, B00000000, B00001010, B00100000, B00000000, B00000000, B00001001, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101010, B10000010, B10100000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00000001, B00000000, B00000010, B00100000, B00000000,
B00101111, B10101010, B10000010, B10000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00100001, B00000000, B00000010, B00000000, B00000000,
B00101111, B10101010, B10000010, B10000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00100000, B00000000, B00000010, B10000000, B00000000,
B00001111, B10101010, B10000000, B00000000, B00000000, B00000000, B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B10101010, B00000000, B00000000, B00000000, B00000000, B00001010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000,
B00001111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B00111000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000,
B00011111, B11100010, B00000000, B00000000, B00000000, B00000000, B10111000, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B00111000, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000010, B00000000, B00000000, B00000000,
B00111111, B11010010, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11011010, B00000000, B00000000, B00000000, B00010000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111010, B00000000, B00000000, B00000000, B00010000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11110110, B10000000, B00000000, B00000000, B00010000, B00111110, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11111110, B10000000, B00000000, B00000000, B00000000, B00011101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111110, B10100000, B00000000, B00000000, B00000100, B00011101, B10000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111110, B10100000, B00000000, B00000000, B00000100, B00111101, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11111110, B10100000, B00000000, B00000000, B00010100, B00111111, B00000000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00000000,
B00111111, B11111111, B10000000, B00000000, B00000000, B00010000, B00101111, B00000000, B00000000, B00000000, B00100000, B00000000, B10000000, B00000000, B00000000,
B00111111, B11111111, B01000000, B00000000, B00000000, B00010000, B00101111, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111111, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000101, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00100000, B00000000, B01000000, B00000000, B00000000,
B00111111, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00111110, B11111010, B01000000, B00000000, B00000000, B00010000, B00101010, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00111110, B11111010, B10000000, B00000000, B00000000, B00010000, B00101000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000,
B00111010, B11111110, B10100000, B00000000, B00000000, B00010000, B10101000, B00000000, B00000000, B00000000, B00000101, B00000100, B00000000, B00000000, B00000000,
B00111010, B11111110, B10110000, B00000000, B00000000, B00010000, B00101000, B00000000, B00000000, B00000000, B00000101, B00000000, B00010000, B00000000, B00000000,
B00111111, B11111110, B10110100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00010000, B00000100, B00000100, B00000000, B00000000,
B00101111, B11111010, B10111100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111010, B10111100, B00000000, B00000000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00101111, B11111010, B11111101, B00000001, B00000000, B00000000, B10101000, B00000000, B00000000, B00000000, B00000000, B00010000, B00100000, B00000000, B00000000,
B00101111, B11101010, B11011101, B01000101, B00000000, B00000000, B10101000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B01000000, B00000000,
B00101111, B11101010, B11011101, B01010101, B00000000, B00000000, B10100000, B00000000, B01010100, B00000000, B00100000, B00000000, B10000000, B00000000, B00000000,
B00101111, B11101010, B01111101, B01010101, B00000000, B00000000, B10100000, B00000000, B01010100, B00000000, B00100000, B00000000, B01100000, B00000001, B00000000,
B00101111, B11101010, B00111101, B01010100, B00000000, B00000000, B00100000, B00000000, B01010000, B00000000, B00100000, B00000000, B00100000, B00000000, B00000000,
B00101111, B11101010, B00111101, B11110100, B00000000, B00000000, B00100000, B00000000, B00110000, B00000000, B00100000, B01000000, B00100000, B10000100, B00000000,
B00101111, B11101010, B00111101, B11111100, B00000000, B00000000, B00100000, B00000000, B10100000, B00000000, B00100000, B01000010, B00100000, B00001100, B00000000,
B00001111, B11101010, B00111101, B11111000, B00000000, B00000000, B00000000, B00000000, B10101000, B00000000, B00000100, B01000010, B00100000, B00000000, B00000000,
B00001011, B10101000, B00010101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011011, B10101000, B00010101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00010001, B00001000, B00000000, B00000000, B00000000,
B00011010, B10101000, B00000101, B11110000, B00000000, B00000000, B00000000, B00000000, B10100000, B00000000, B00010000, B00001000, B00000000, B00000000, B00000000,
B00011010, B10101000, B00000111, B11110000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010000, B00000000, B00000010, B00000000, B00000000,
B00011010, B10101000, B00000111, B11110000, B00000000, B00010000, B00000000, B00000000, B10100000, B00000000, B00010000, B00000000, B00000010, B00010000, B00000000,
B00011110, B10101000, B00000111, B11100000, B00000000, B00010000, B00000000, B00000001, B10100000, B00000000, B00010100, B00000000, B00000000, B00000000, B00000000,
B00011110, B10101000, B00001111, B11100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00100000, B00001000, B01000000, B00000000,
B00011110, B10101000, B00001111, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00100000, B00001000, B00000000, B00000000,
B00011110, B10101000, B00001111, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00101000, B00000000, B00000000, B00000000,
B00011110, B10100000, B00001011, B10100000, B00000000, B00010100, B00000000, B00000001, B10100000, B00000000, B00010100, B00000000, B00000000, B00000000, B00000000,
B00111110, B10100000, B00001011, B10100000, B00000000, B00010100, B00000000, B00000000, B10100000, B00000000, B00110100, B00100000, B00000000, B00000000, B00000000,
B00111110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00110100, B00000000, B00000000, B00000000, B00000000,
B00111110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00110100, B10000000, B00000000, B00000000, B00000000,
B00011110, B10000000, B00001010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010100, B10000000, B00000010, B00000000, B00000000,
B00011110, B00000000, B00000010, B10101000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000, B00010100, B00000000, B00000010, B10000000, B00000000,
B00011010, B00000000, B00000000, B10101000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10000000, B00000000,
B00011010, B00000000, B00000000, B10101000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10001000, B00000000,
B00011010, B00000000, B00000000, B10100000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B10000000, B00000000,
B00011010, B00000000, B00000000, B00100000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00100000, B00000000,
B00011010, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011010, B10000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B10000000, B00000000, B00000000, B00000000,
B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000,
B00001010, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000,
B00001010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001110, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000001, B01000000, B00000000, B00000000, B00000000, B00000001, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000001, B01000000, B00000010, B00000000, B00000000, B00000001, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001010, B00000101, B01000000, B00001010, B00000000, B00000000, B00000101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001010, B00000000,
B00001010, B01000101, B01000000, B00001010, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00001010, B00000000,
B00001010, B01000101, B01000000, B00001010, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00001010, B00000000,
B00001001, B01000101, B01010000, B00001000, B00000000, B00000000, B01000101, B00000000, B00000000, B00000000, B00001000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000101, B01010000, B00001000, B00000000, B00000000, B00000101, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01010001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01000001, B01010000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000001, B01010001, B01010000, B00000000, B00000000, B00000000, B01000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00000101, B01010101, B01010000, B00000000, B00000000, B00000001, B01000101, B00000000, B00000000, B00000000, B00000100, B00000000, B00010000, B00000000, B00000000,
B00000101, B01000101, B01010000, B00000000, B00000000, B00000001, B01000101, B00000000, B00000000, B00000000, B00000100, B00000000, B00010000, B00000000, B00000000,
B00000101, B01010101, B01010000, B00000000, B00000000, B00000001, B01000101, B01000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000,
B00000101, B01010101, B01010101, B00000000, B00000000, B00000001, B00000101, B01000000, B00000000, B00000000, B00000100, B00000000, B00000100, B00000000, B00000000,
B00000101, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000101, B01010001, B01010101, B01010000, B00000000, B00000000, B00000001, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01010001, B01010101, B01010000, B00000000, B00000000, B00000001, B01000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01000101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
B00010101, B01000101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010101, B01010101, B01010101, B01010000, B00000000, B00000000, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010101, B01010101, B01010101, B01010000, B00000000, B00000100, B00000101, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010101, B01010101, B01010000, B00000000, B00000100, B00000101, B01000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010001, B01010101, B01010000, B00000000, B00000100, B00000001, B01000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010101, B01010101, B01000000, B00000000, B00000000, B00000101, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010001, B01010101, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00011000, B00000000, B00000000, B00000000, B00000000,
B00011111, B01010001, B01010101, B00000000, B00000000, B00000000, B00000001, B00000001, B00000000, B00000000, B00011000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010100, B01010100, B00000000, B00000000, B00000000, B00000100, B00010100, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010100, B01010000, B00000000, B00000000, B00000000, B00000100, B01010000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00000111, B01010101, B00010000, B01000000, B00000000, B00000000, B00010101, B00010000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00000111, B01010101, B00000001, B01000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000,
B00000111, B01010101, B00000001, B01000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B01010101, B01000001, B01000000, B00000000, B00000000, B00010101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000,
B00010111, B01010101, B01000001, B00000000, B00000000, B00000000, B00010101, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00010111, B11010101, B00000001, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00010000, B10000000, B00000001, B00000000, B00000000,
B00011111, B11010101, B00000000, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00011000, B10000000, B00000000, B00000000, B00000000,
B00011111, B11010101, B00000000, B00000000, B00000000, B00000000, B00010101, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11110100, B00000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00010000, B00100000, B00000000, B00000000, B00000000,
B00011111, B11110000, B00000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01110100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11100100, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11100100, B00000000, B00000000, B00000000, B00000000, B01111100, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00111111, B11100100, B00000000, B00000000, B00000000, B00000000, B11111110, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11101101, B00000000, B00000000, B00000000, B00000000, B11111110, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00011111, B11101101, B00000000, B00000000, B00000000, B00001000, B01111110, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111101, B01000000, B00000000, B00000000, B00001000, B00111110, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00011111, B11111101, B01000000, B00000000, B00000000, B00001000, B00011111, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111101, B01010000, B00000000, B00000000, B00001000, B00001111, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00011111, B11111111, B01010000, B00000000, B00000000, B00001000, B00011110, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000,
B00011111, B11111111, B01000000, B00000000, B00000000, B00001000, B00010110, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000,
B00011111, B11111111, B10000000, B00000000, B00000000, B00001000, B01010110, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00011111, B11111111, B10000000, B00000000, B00000000, B00001000, B01010100, B10000000, B00000000, B00000000, B00000000, B00000011, B00000000, B00000000, B00000000,
B00011111, B11111101, B10000000, B00000000, B00000000, B00001000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00011111, B11111101, B10000000, B00000000, B00000000, B00000000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00111111, B11111101, B10000000, B00000000, B00000000, B00100000, B01010100, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
B00111101, B11111101, B10000000, B00000000, B00000000, B00101000, B01010100, B00000000, B00000000, B00000000, B00000010, B00000001, B00000000, B00000000, B00000000,
B00111101, B11111101, B10000000, B00000000, B00000000, B00101000, B01010100, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000,
B01111101, B11111101, B11000000, B00000000, B00000000, B00100000, B01010100, B00000000, B00000000, B00000000, B01000010, B00000000, B11000000, B00000000, B00000000,
B01111101, B11111101, B01010000, B00000000, B00000000, B00100000, B01010000, B00000000, B00000000, B00000000, B01000010, B00000000, B00010000, B00000000, B00000000,
B01011101, B11111101, B01010000, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B01000010, B00000000, B00000000, B00000000, B00000000,
B00011101, B11111111, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000010, B00000010, B00100010, B00000000, B00000000,
B00011111, B11111101, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00001000, B00100000, B00000000, B00000000,
B00011111, B11111101, B01111010, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000,
B00011111, B11110101, B11111010, B10000010, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B10000000, B00000000,
B00011111, B11110101, B11111110, B10001010, B00000000, B00000000, B01010000, B00000000, B00001010, B00000000, B00000000, B00100000, B11010100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01010000, B00000000, B00101010, B00000000, B00000000, B00000000, B00010100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00001000, B00000001, B00000100, B00000000, B00000000,
B00011111, B11010101, B00111110, B10101010, B00000000, B00000000, B01000000, B00000000, B10101000, B00000000, B00001000, B00000001, B00000100, B00000010, B00000000,
B00011111, B11010101, B00111110, B11111000, B00000000, B00000000, B01000000, B00000000, B01100000, B00000000, B00001000, B00000001, B00000100, B00010000, B00000000,
B00010111, B11010100, B00111010, B11111000, B00000000, B00000000, B00000000, B00000000, B01010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00110111, B11010100, B00111011, B11111000, B00000000, B00100000, B00000000, B00000000, B01010000, B00000000, B00110000, B00000000, B00000001, B00001000, B00000000,
B00110111, B11010101, B00111011, B11110000, B00000000, B00100000, B00000000, B00000000, B01010000, B00000000, B00110010, B00000100, B00010001, B00000000, B00000000,
B00110101, B11010000, B01101011, B11110000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000000, B00100001, B00010000, B00000000,
B00110101, B01010000, B00001011, B11110000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000000, B00000001, B00010000, B00000000,
B00110101, B01010100, B00000011, B11100000, B00000000, B00100000, B00000000, B00000000, B01000000, B00000000, B00110000, B00000100, B00000000, B00000000, B00000000,
B00111101, B01010100, B00000011, B11100000, B00000000, B00100000, B00000000, B00000000, B11000000, B00000000, B00111000, B00010100, B00000000, B00000000, B00000000,
B00111101, B01010100, B00000111, B11110000, B00000000, B00101000, B00000000, B00000000, B11000000, B00000000, B00111000, B00010100, B00000100, B00110000, B00000000,
B00111111, B01010100, B00000111, B11010000, B00000000, B00101000, B00000000, B00000001, B11000000, B00000000, B00111010, B00000100, B00000000, B00010000, B00000000,
B00111111, B01010100, B00010111, B11010000, B00000000, B00101000, B00000000, B00000001, B11000000, B00000000, B00111010, B00000100, B00010000, B00010000, B00000000,
B00111101, B01010000, B00010111, B11010000, B00000000, B00101000, B00000000, B00000011, B01010000, B00000000, B00111000, B00000000, B00010000, B00000000, B00000000,
B00111101, B01010000, B00010101, B11010000, B00000000, B00101000, B00000000, B00000001, B01010000, B00000000, B00111000, B00010000, B00010000, B00000000, B00000000,
B00111101, B01000000, B00010101, B01010000, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00010000, B00000000, B00000000,
B00111101, B01000000, B00000101, B01010000, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B01000000, B00000000, B00000000, B00000000,
B00111101, B00000000, B00000101, B01010100, B00000000, B00101000, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00000000, B00000100, B00000000,
B00111101, B00000000, B00000101, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00101000, B00000000, B00000001, B00000100, B00000000,
B00111101, B00000000, B00000100, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00101001, B00000000, B00000000, B00000100, B00000000,
B00111101, B00000000, B00000100, B01010100, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000100, B00000100, B00000000,
B00111101, B00000000, B00000000, B01010000, B00000000, B00101000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B00000000, B00000000,
B00111101, B00000000, B00000000, B01010000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B00010000, B00000000,
B00111101, B00000000, B00000000, B01000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00111001, B00000000, B00000000, B01000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00110101, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00110000, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00010000,
B00010101, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10000000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10000000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000100, B00000000,
B00010101, B00000010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010101, B00000010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010001, B00000000, B00000000, B00000000, B00000000,
B00010100, B10100010, B10100000, B00000100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00010000, B10000000, B00000000, B00000000, B00000000,
B00000100, B10100010, B10100000, B00010100, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00010000, B00000000,
B00000010, B10100010, B10100000, B00000100, B00000000, B00000000, B10000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000100, B00000000,
B00000010, B10100010, B10100000, B00000000, B00000000, B00000000, B00000010, B10000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000
};
//############################################################################################################################################################
//Definitionen und Variablen//определения и переменные
//############################################################################################################################################################
//Definition der Ausgangspins am µ-Controller//определение выходных выводов на микроконтроллер
#define latchPin 10 // Latch-Pin//защелка
#define PIN_SCK 13 // SPI Clock//SPI часы
#define PIN_MISO 12 // SPI Dateneingang//SPI ввод данных
#define PIN_MOSI 11 // SPI Datenausgang//SPI вывод данных
#define debug_pin 8 // LED an Pin 8 zum Debuggen//LED на вывод 8 для отладки
#define LS_Pin 3 // Lichtschranke//фотоэлемент
#define N_O_S 200 // Anzahl Sektoren//количество секторов
#define v_offset 3 // Rotationsgeschwindigkeit des dargestellten Bildes//скорость вращения отображаемого изображения
#define TOL 20 // Toleranz//толерантность
unsigned long sector_time = 20; // Sektorzeit in µs//время сектора в мл/сек
unsigned int counter = 0; // zählt später wieviele Sektoren wärend einer Umdrehung "geschaft" wurden//колличество секторов за 1 оборот
unsigned int pointer = 0; // zeigt später auf die richtige Stelle im Programmspeicher//пожже указывает на правильную позицию в памяти программы
unsigned int offset = 0; // Offset zum Pointer, der für die Drehung des Bildes sorgt//смещение к указателю,который поворачивает изображение
volatile byte LS = 0; // Austauschvariable zwischen Main-Prozedur und Interrupt-Service-Routine (LS = Licht-Schranke)//переменная обмена между основной процедурой и процедурой обработки прерываний (LS=световой барьер)
byte mode = 1; // Modus//режим
unsigned long end_time = 0; // Endzeit eines Modus//время окончания режима
byte flag = 0;
//############################################################################################################################################################
//Setup - Prozedur //процедура настройки
//############################################################################################################################################################
void setup()
{
// Pins auf Ein- oder Ausgang stellen und einen Startwert zuweisen//установите контакты для ввода или вывода и назначьте начальное значение
pinMode(latchPin, OUTPUT);
pinMode(PIN_SCK, OUTPUT);
pinMode(PIN_MOSI, OUTPUT);
pinMode(debug_pin, OUTPUT);
pinMode(PIN_MISO, INPUT);
pinMode(LS_Pin, INPUT);
digitalWrite(latchPin, LOW);
digitalWrite(PIN_SCK, LOW);
digitalWrite(PIN_MOSI, LOW);
digitalWrite(debug_pin, LOW);
digitalWrite(PIN_MISO, HIGH); // Internen Pull-Up-Widerstand aktivieren//активировать внутренний подтягивающий резистор
digitalWrite(LS_Pin, HIGH); // Internen Pull-Up-Widerstand aktivieren//активировать внутренний подтягивающий резистор
//SPI Komunikation vorbereiten//подготовьте SPI общение
SPCR = B01010000;
//SPI Control Register (SPCR)//регистор контроля SPI (SPCR)
// | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// | SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |
// SPIE - Enables the SPI interrupt when 1//SPIE - включает SPI прерывание кода
// SPE - Enables the SPI when 1//SPE - включает SPI когда 1
// DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0//DORD - отправляет младший значащий бит данных сначала, когда 1, старший значащий бит первым, когда 0
// MSTR - Sets the Arduino in master mode when 1, slave mode when 0//MSTR - устанавливает Arduino в режим мастер, когда 1, в режиме Slave, когда 0
// CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0//CPOL - устанавливает часы данныхв режим ожидания, когда высокий, если установлено в 1, в режиме ожидания, когда низкий, если в 0
// CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0//CPHA - осуществляет выборку данных по падающему фронту тактовых импульсов данных, когда 1, по ребристому фронту , когда 0
//SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)//SPR1 и SPR0 - устанавливает скорость SPI, 00 самая быстрая (4мГц) 11 самая медленная (250кГц)
SPSR = B00000000; //SPI Status Register auf 0 setzen//установить регистр статуса SPI на 0
//Alle LEDs aus//всё светится
all_leds_off();
digitalWrite(debug_pin, HIGH);
// Warten bis Motor Nenndrehzahl erreicht hat// время задержки скорости двигателя
for (byte a=0; a<50; a++)
{
while (digitalRead(LS_Pin) == HIGH) {delayMicroseconds(1);}
delay(20);
}
digitalWrite(debug_pin, LOW);
end_time = millis() + (random(10,20) * 1000);
mode = 1;
//Interrupt vorbereiten//подготовить прерывание
attachInterrupt(1, Erkenne_Flanke, FALLING);
}
//############################################################################################################################################################
//Hauptprogramm//основная программа
//############################################################################################################################################################
void loop()
{
LS = 0;
if (flag == 0)
{
if (counter < (N_O_S)) {sector_time--;}
if (counter > (N_O_S)) {sector_time++;}
}
if (counter == N_O_S) {flag = 1;}
if ((counter < (N_O_S - TOL)) || (counter > (N_O_S + TOL))) {flag = 0;}
if (end_time < millis())
{
end_time = millis() + (random(10,20) * 1000);
flag=0;
mode++;
if (mode == 2) {mode = 1;}
}
counter = 0;
if (offset > (N_O_S - 1)) {offset = 0;}
EnableSPI();
while (LS == 0)
{
if (counter < N_O_S) {pointer = counter;} else {pointer = N_O_S - 1;}
pointer = pointer + offset;
if (pointer > (N_O_S - 1)) {pointer = pointer - N_O_S;}
pointer = pointer * 15;
digitalWrite(latchPin, LOW); // LatchPin erden, damit LEDs nicht schon beim "Durchschieben" blinken//заземлите фиксатор чтобы диоды не мигали
switch (mode)
{
case 1: for (int l=0; l<15; l++){SendRecSPI(pgm_read_byte_near(bild_01 + pointer + l));} // 15 Byte für SR#15 bis SR#1 rausschieben//сдвиньте 15 байтов для SR#15 в SR#1
break;
}
digitalWrite(latchPin, HIGH); // LatchPin auf HIGH setzen und damit alle SR aktivieren//установите фиксатор в положение ВЫСОКИЙ и активируйте все SR
counter++;
unsigned long end_micros = micros() + sector_time;
while ((micros() < end_micros) && (LS == 0)) {} // Warten bis Sektorzeit vorüber ist//дождитесь окончания сектора
}
DisableSPI();
offset = offset + v_offset;
}
//############################################################################################################################################################
//Interrupt-Service-Routine//программа обработки прерываний
//############################################################################################################################################################
void Erkenne_Flanke(void)
{
LS = 1;
}
//############################################################################################################################################################
//Hilfsfunktion zum Aussschalten aller LEDs//вспомогательная функция для отключения всех светодиодов
//############################################################################################################################################################
void all_leds_off(void)
{
EnableSPI();
digitalWrite(latchPin, LOW); // LatchPin erden, damit LEDs nicht schon beim "Durchschieben" blinken//заземлите фиксатор , чтобы светодиоды не мигали при их проталкивании
for (int l=0; l<15; l++){SendRecSPI(0);} // 15 Byte für SR#15 bis SR#1 rausschieben//сдвиньте 15 байтов для SR#15 в SR#1
digitalWrite(latchPin, HIGH); // LatchPin auf HIGH setzen und damit alle SR aktivieren//установите фиксатор в положение ВЫСОКИЙ и активируйте все SR
DisableSPI();
}
//############################################################################################################################################################
// Prozeduren für die SPI//процедуры для SPI
//############################################################################################################################################################
void EnableSPI(void) {SPCR |= 1 << SPE;}
void DisableSPI(void) {SPCR &= ~(1 << SPE);}
void WaitSPIF(void) {while (! (SPSR & (1 << SPIF))) {continue;}}
void SendRecSPI(byte Dbyte)
{
SPDR = Dbyte;
WaitSPIF();
//return SPDR; //Schiebregister schicken nichts zurück//возвращение SPDR//скользящие регистры ничего неотправляют обратно
}
Добрый день!
А какая именно ошибка возникает?
@olga549 Я не особо увлекаюсь Arduino, но вроде как обычно в большинстве проектов по максимуму используются готовые библиотеки, а тут внезапно работа с SPI напрямую через регистры. В целом, есть два варианта:
- Всю платформозависимую часть переписать под ESP32. То есть допустим на примере функции EnableSPI() - посмотреть, какой регистр в ESP32 отвечает за включение модуля SPI, и использовать его в этой функции (вместо SPCR, который относится к AVR).
- Либо в изначальном скетче работу в частности с SPI организовать через готовую библиотеку (я думаю, что есть какая то базовая библиотека SPI, которая поддерживает и AVR и ESP32, но это лучше уточнить), а затем соответственно через эту же библиотеку работать и на ESP32.
Перечитал первое сообщение, библиотека SPI видимо ради экономии места исключена. Тогда надо просто все платформозависимые куски заменить на аналогичные по сути но под ESP32.
@aveal а как это сделать? помог бы кто нибудь, кому не трудно, так как писать я не умею. а про библиотеку, я это сразу поняла, что ручным способом регистр сконфигурировали.вот я нашла разъяснения. а вот писать не умею.
и найдя в яндексе, я почитала и поняла что конфигурация одинаковая для SPI/ что для ардуино что для есп32. и компилятор ошибку выдает не в месте конфигурации. а в функции SPI.
@olga549 На коленке сделал по-быстрому, большую часть убрал, работу с SPI сделал через SPIClass. Собирается без ошибок, но слабо верю, что сходу заработает )
https://disk.yandex.ru/d/Yef4fCeUhCnkrw - скетч.
@aveal спасибо,я проверю отпишусь, так как для этого надо макет собрать, а как проверить на коленках- разобралась, попробую, чуть позже отпишусь.
@aveal здравствуйте, я проверила для понимания о работоспособности устройства и скажу так. использовав в качестве макета старый большой глобус сделанный на атмеге , ( а проверялось так-на не вращающейся основе устройства при замыкании датчика фоторезистора на корпус происходит хаотичное зажигание светодиодов. что свидетельствует о работе устройства на атмеге.) в место атмеги328 включаю есп32 к регистрам 595 через конвертор уровней.на есп32 тест про делался таким же образом и полученный результат вот какой. диоды зажигаются хаотически как и при использовании атмега328, но при атмеге они просто горели с каждым импульсом от датчика они просто переключались в рандомной последовательности, а после переписки скетча они входят в такой же режим как и при основном скетче, но каждому диоду добавился пульсирующий режим. но для того что бы проверить точно все, мне нужно сначала для маленького глобуса сделать плату под есп32 вместо атмега328. и вот тогда уже я смогу протестировать до конца. если вам будет не трудно вы не теряйтесь пожалуйста, а начиная с сегодняшнего дня я сделаю маленькую плату для того чтобы его подключить к маленькому глобусу основательно и тогда можно будет полном объеме протестировать и начать исправлять ошибки. на это у меня уйдет недели 2-3. так как я тоже работаю и тогда я смогу проверить и отписаться о точном результате. заранее спасибо вам хотя бы за то что откликнулись и за проделанную работу. я как сделаю и буду готова напишу и можем продолжить пробовать в телеграмме если можно . вотсап у меня не работает так как телефон старый и обновления на него уже не устанавливаются , работает только телега. я обязательно еще объявлюсь , сделаю и приду !!!!!
@aveal здравствуйте,я выполнила все запланированные работы досрочно на 2 неделе. о чем спешу отрапортовать с радостью!!!!!! вот результат после загрузки скетча вами присланного. фотки прилагаю . для более удобного варианта работы вот моя телега IRA6784
это большой глобус старый вариант. на нем и буду испытывать для удобства на нем раньше было сделано для тестов на 48 LED и 40 LED поэтому если что на негорящие верхние 8 диодов не обращайте внимания это для 48 LED.
а вот маленький вариант будущий компактный.
@olga549 Добрый день! Давайте пока тут обсуждать, а там посмотрим - возможно кому-то еще пригодится информация.
А можете сфотографировать в работе первоначальный вариант на ардуино, чтобы было понимание, как должно работать.
файлы для полного пояснения работы.
там видео, описание проекта и пояснения архив зип.
то что я собрала один в один то что на видео и картинках,но что бы мое вернуть надо обратно все новое разобрать, а старое вернуть.затруднительно уже...
@olga549 Отлично, спасибо, вечером посмотрю, если там и так все есть, то незачем разбирать)
@olga549 Доброго времени суток!
Я немного обновил, но в целом по идее там все нормально должно было быть с передачей данных... Давайте протестируем этот вариант.
https://disk.yandex.ru/d/K-h6eBfS8OPySw




