здравствуйте уважаемые форумчане сайта. хочу у вас попросить помощи, кому не сложно и не жалко уделить немного времени. просьба вот какая. есть у меня вот такая игрушка сделанная мною по описанию из интернета,я ее собрала как пробный вариант, работает. но появилось желание ее сделать на модуле 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//скользящие регистры ничего неотправляют обратно }