Помогите разобраться новичку.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Предыстория:

Строю я крышку к аквариуму, в которой собрал 8 каналов белого (включать 1, затем 2, затем 3 и т.д. тем самым имитируя рассвет, и в обратном порядке выключая - закат). Так-же там собрал 4 RGB (12 каналов - для коррекции цвета, например "вечером" добавляя красного).

Итого у меня 20 каналов света, управляемые LDD-700h + 2 канала охлаждения, упраляемые MOSFETами.

Купил Arduino Mega 2560 и 2 шилда с PCA9685, таймер реального времени ("утром" подача "1" на один из входов Arduino, вечером "0") собрал все это.

Проблемка:

Неделю уже бъюсь над кодом, чтобы хотя-бы на нектороый процент PWM днем включать свет, ночью гасить, оставляя небольшой процент PWM.

Непосредственно на свои PWM Arduino выводить это я научился, а вот выводить это на PCA9685 никак.

Подскажите, пожалуйста что и где я не так делаю.



#include <Wire.h>
#include <HT_PCA9685.h>
int daypin = 14; // Таймер подключен к 14-му входу
int SunPin = 0;  // Потенциометр подключен 0-му аналоговому входу
int MoonPin = 1;  // Фоторезистор подключен 1-му аналоговому входу
int Sun = 0;// переменная для хранения значения входного напряжения
int Moon = 0;// переменная для хранения значения входного напряжения
int day = 0;

HT_PCA9685 pwm2 = HT_PCA9685(0x42);
HT_PCA9685 pwm1 = HT_PCA9685(0x41);

void setup() {
{ Serial.begin(9600);
  pinMode(daypin, INPUT);
 Wire.begin();           // Wire старт
}
   {
  pwm1.begin();
  pwm1.PWMFreq(1000); // 1kHz
  pwm2.begin();
  pwm2.PWMFreq(1000); // 1kHz
    }
}
void loop() {
  {
  day = digitalRead(daypin);    // узнаём состояние кнопки
  Moon = analogRead(MoonPin);  // считываем значение с фоторезистора
  Sun = analogRead(SunPin);  // считываем значение с потенциометра
  Serial.println("d");
  Serial.println(Sun);
  Serial.println(day);
  delay(50);
   Serial.println("n");
   Serial.println(Moon);
     Sun = Sun*4;                 // конвертируем из 0-1023 к 0-4096
  Moon = Moon*4;                 // конвертируем из 0-1023 к 0-4096

  }
 
 {
   if(day==HIGH) 
 {pwm1.PWM(0,Sun);
  pwm1.PWM(1,Sun);
   pwm1.PWM(2,Sun);
    pwm1.PWM(3,Sun);
     pwm1.PWM(4,Sun);
      pwm1.PWM(5,Sun);
       pwm1.PWM(6,Sun);
        pwm1.PWM(7,Sun);
         pwm1.PWM(8,Sun);
          pwm1.PWM(9,Sun);
           pwm1.PWM(10,Sun);
            pwm1.PWM(11,Sun);
             pwm1.PWM(12,Sun);
              pwm1.PWM(13,Sun);
               pwm1.PWM(14,Sun);
                pwm1.PWM(15,Sun);
delay(100);}
else       
{
  pwm1.PWM(0,Moon);
  pwm1.PWM(1,Moon);
  pwm1.PWM(2,Moon);
  pwm1.PWM(3,Moon);
  pwm1.PWM(4,Moon);
  pwm1.PWM(5,Moon);
  pwm1.PWM(6,Moon);
  pwm1.PWM(7,Moon);
  pwm1.PWM(8,Moon);
  pwm1.PWM(9,Moon);
  pwm1.PWM(10,Moon);
  pwm1.PWM(11,Moon);
  pwm1.PWM(12,Moon);
  pwm1.PWM(13,Moon);
  pwm1.PWM(14,Moon);
  pwm1.PWM(15,Moon);
  delay(100);
}
delay(200);
  }
}

Коменто типа: "говнокод", читай "ссылка" не надо. Читал я много статей, но для меня это темный лес, у меня лишь на опыте/примерах получается учиться.

 

bwn
Offline
Зарегистрирован: 25.08.2014

Непосредственно на свои PWM Arduino выводить это я научился, а вот выводить это на PCA9685 никак. Для начала с его системой команд разобратся, там в библиотеке примеры есть какие-нибудь?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Вот тот пример полностью, переиграв котрый я пытаюсь написать:

/***************************************************
  PCA9685 PWM/Servo Library
  PWM Example Program
  
  Set PWM Frequency to 1kHz
  Set first 15 channel outputs to a step value 
  Set last channel (15) to sweep
  
  Copyright (c) 2014 www.hobbytronics.co.uk  All right reserved.

****************************************************/

#include <Wire.h>
#include <HT_PCA9685.h>

HT_PCA9685 pwm = HT_PCA9685(0x40);

void setup() {

   pwm.begin();
   pwm.PWMFreq(1000); // 1kHz
    
   // set each output to a step value so we have 16 steps
   for (unsigned char channel=0; channel < 16; channel++) {
      pwm.PWM(channel, (channel * (4096/16)));
   }	 
}

void loop() {

   // Sweep channel 15 slowly up then start back at 0
   for (unsigned int i=0; i<4096; i += 16) {
      pwm.PWM(15, i);
      delay(10);
   }
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

А если закомментить с 24 по 26 строку, у вас после этого яркость изменяется?

Кстати http://www.nxp.com/documents/data_sheet/PCA9685.pdf    , если с аглицким нормально.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Закоментить24
}
25
void loop() {
26
{ ?
Читал я это несколько раз, но не силен я в английском.
Пробовал его и гугл переводчиком - еще непонятнее.

bwn
Offline
Зарегистрирован: 25.08.2014

Я строки из кода примера имел в виду, если с ним нормально работает.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Опаньки, а он сам по себе дает те-же результаты.

Работает лишь:

/*****************
 * This example demonstrates the library assuming that LEDs are connected to the outputs
 * It will run through all 16 LEDs turning them up and down in 10 steps.
 * The PCA9685 chip is assumed to have PINS A0,A1 and A2 grounded (LOW) and A3,A4 and A5 set to VCC (5V, HIGH)
 * 
 * - kasper
 */

#include <Wire.h>
#include <PCA9685.h>


PCA9685 ledDriver; 

void setup()
{
  Serial.begin(9600); // set up serial
  Serial.println("Serial Started");

  Wire.begin();           // Wire must be started!
  ledDriver.begin(B111000);  // Address pins A5-A0 set to B111000
  ledDriver.init();


}

void loop()
{
  // Notice: setLEDDimmed cannot be used in a loop to give you a pleasant 
  // "turning-up" of the LED. This is because each time you set a level for a LED
  // it will calculate random timing intervals for the PWM function in the chip
  // This is done in order to distribute current consumptions of the full time period.
  
  for(int level=5;level>=0;level--)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
  for(int level=0;level<=5;level++)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
} 

Но в нем я мало догоняю, и менять под свои нужды в нем у меня не особо выходит.

bwn
Offline
Зарегистрирован: 25.08.2014

Во втором  градаций яркости очень мало получается. А по первой конструкции, пример тоже не работает?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

В общем, я залил очередной пример, и у меня все выводы PCA9568 вышли в высокоимпедансное состояние, хотя до этого на них был "0", все поперепробовал - не знаю уже что делать

bwn
Offline
Зарегистрирован: 25.08.2014

Ток даташит курить с библиотекой и пробовать, ну может еще кто связывался с этой радостью.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

А не могли бы вы мне раскоментировать часть кода?

{
  // Notice: setLEDDimmed cannot be used in a loop to give you a pleasant 
  // "turning-up" of the LED. This is because each time you set a level for a LED
  // it will calculate random timing intervals for the PWM function in the chip
  // This is done in order to distribute current consumptions of the full time period.
  
  for(int level=5;level>=0;level--)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
  for(int level=0;level<=5;level++)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
} 

 

bwn
Offline
Зарегистрирован: 25.08.2014
{
  // Notice: setLEDDimmed cannot be used in a loop to give you a pleasant 
  // "turning-up" of the LED. This is because each time you set a level for a LED
  // it will calculate random timing intervals for the PWM function in the chip
  // This is done in order to distribute current consumptions of the full time period.
  
  for(int level=5;level>=0;level--)  {           //Уровень  от 0 до 5
    for(int i=0; i<16; i++)  {                              //Выбор канала в цикле
      ledDriver.setLEDDimmed(i,level*20);  //В канал i записать значение уровня * 20 (получается максимум 100знач)
      delay(100);   //Задержка 0,1 секунды  
    }
  }
  for(int level=0;level<=5;level++)  {   //Здесь аналогично, только в обратную сторону.
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
} 

 

bwn
Offline
Зарегистрирован: 25.08.2014

И еще смешной вопрос, вы I2C адреса своих мелкосхем проверяли? Откуда 0х41 и 0х42 ?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

:) Этот момент я еще 4 дня назад победил.

0х41 и 0х41 получены путем установки перемычек на платы.

проверял осцилографом на SDA:

когда ставлю адрес 0х40 - есть лишь короткая серия запроса от Arduino

Когда ставлю  0х41 и 0х42 - идет постоянное общение длинными сериями между Arduino и PCA9685.

К слову:

Спасибо Вам за раскоментированный код, я сильно продвинулся, мне удалось заставить реагировать на "Sun" (см.код) один канал на PCA9685.

Сейчас допишу на все каналы и могу сюда сбросить.

bwn
Offline
Зарегистрирован: 25.08.2014

SERgunCHIK пишет:

:) Этот момент я еще 4 дня назад победил.

0х41 и 0х41 получены путем установки перемычек на платы.

проверял осцилографом на SDA:

когда ставлю адрес 0х40 - есть лишь короткая серия запроса от Arduino

Когда ставлю  0х41 и 0х42 - идет постоянное общение длинными сериями между Arduino и PCA9685.

К слову:

Спасибо Вам за раскоментированный код, я сильно продвинулся, мне удалось заставить реагировать на "Sun" (см.код) один канал на PCA9685.

Сейчас допишу на все каналы и могу сюда сбросить.

Сложным вы однако путем шли, есть такая вещь, зовется I2C сканер. Заливаете код в дуину, он вам выдает адреса всех подключенных устройств. Вопрос возник от того, что по магической цифре B111000 у меня получается 0х38, а есть подозрения что это  адрес.((((

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

На шильде PCA9685 впаивается до 6ти перемычек, задающие ее адрес. "В111000" - это равносильно перевычкам "111000" я же впаял перемычки "000001" и "000010". - Все постигнуто опытным путем.

Заработала одна плата PCA9685 вот так:


#include <Wire.h>
#include <PCA9685.h>
int daypin = 14; // Таймер подключен к 14-му входу
int SunPin = 0;  // Потенциометр подключен 0-му аналоговому входу
int MoonPin = 1;  // Фоторезистор подключен 1-му аналоговому входу
int Sun = 0;// переменная для хранения значения входного напряжения
int Moon = 0;// переменная для хранения значения входного напряжения
int day = 0;


PCA9685 ledDriver; 

void setup()
{
  Serial.begin(9600); // set up serial
  Serial.println("Serial Started");
   pinMode(daypin, INPUT);

  Wire.begin();           // Wire must be started!
  ledDriver.begin(B000001);  // Address pins A5-A0 set to B111000
  ledDriver.init();
}

void loop()
{
  { 
  day = digitalRead(daypin);    // узнаём состояние кнопки
  Moon = analogRead(MoonPin);  // считываем значение с фоторезистора
  Sun = analogRead(SunPin);  // считываем значение с потенциометра
  Serial.println("d");
  Serial.println(Sun);
  Serial.println(day);
  delay(50);
   Serial.println("n");
   Serial.println(Moon);
     Sun = Sun*4;                 // конвертируем из 0-1023 к 0-4096
  Moon = Moon*4;                 // конвертируем из 0-1023 к 0-4096
}
  {
         if(day==HIGH) 
    {
     ledDriver.setLEDDimmed(0,Sun);
     ledDriver.setLEDDimmed(1,Sun);
     ledDriver.setLEDDimmed(2,Sun);
     ledDriver.setLEDDimmed(3,Sun);
     ledDriver.setLEDDimmed(4,Sun);
     ledDriver.setLEDDimmed(5,Sun); 
     ledDriver.setLEDDimmed(6,Sun);
     ledDriver.setLEDDimmed(7,Sun);
     ledDriver.setLEDDimmed(8,Sun);
     ledDriver.setLEDDimmed(9,Sun);
     ledDriver.setLEDDimmed(10,Sun);
     ledDriver.setLEDDimmed(11,Sun);
     ledDriver.setLEDDimmed(12,Sun);
     ledDriver.setLEDDimmed(13,Sun);
     ledDriver.setLEDDimmed(14,Sun);
     ledDriver.setLEDDimmed(15,Sun);
delay(100);
}
else       
{
  ledDriver.setLEDDimmed(0,Moon);
  ledDriver.setLEDDimmed(1,Moon);
  ledDriver.setLEDDimmed(2,Moon);
  ledDriver.setLEDDimmed(3,Moon);
  ledDriver.setLEDDimmed(4,Moon);
  ledDriver.setLEDDimmed(5,Moon);
  ledDriver.setLEDDimmed(6,Moon);
  ledDriver.setLEDDimmed(7,Moon);
  ledDriver.setLEDDimmed(8,Moon);
  ledDriver.setLEDDimmed(9,Moon);
  ledDriver.setLEDDimmed(10,Moon);
  ledDriver.setLEDDimmed(11,Moon);
  ledDriver.setLEDDimmed(12,Moon);
  ledDriver.setLEDDimmed(13,Moon);
  ledDriver.setLEDDimmed(14,Moon);
  ledDriver.setLEDDimmed(15,Moon);
  delay(100);
}
delay(200);
  }
}  

 

bwn
Offline
Зарегистрирован: 25.08.2014

И работают плавно на всю длину потенциометра?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

То плавно, то подергивают. Но я считаю это косяком старого Б/У потенциометра, так-как монитор порта тоже не очень ровно меняет цифры цифры, когда кручу потенциометр.

Не подскажите, как проще и правильнее в вышеуказанный код вторую PCA9685 плату вписать либо расширить пины с 0...15 до 0...31? 

bwn
Offline
Зарегистрирован: 25.08.2014

Для проверки, возьмите ваш начальный пример и измените в цикле level с 0 до 4096. вывод просто level ,без умножений. Была ведь причина, что значение только до 100 принимается, а это 2,5% от вашей шкалы.

По второму вопросу не помогу, не настолько опыт велик.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Не очень понял методику проверки. Для меня оказалось проще посмотреть плавность изменения PWM с помощью осцилографа.

Изменения PWM идут через 400мс но вполне точно, под изменение напряжения на а0/а1 (в зависимости от состояния D14).

Спасибо большое за совет.

bwn
Offline
Зарегистрирован: 25.08.2014
/*****************
 * This example demonstrates the library assuming that LEDs are connected to the outputs
 * It will run through all 16 LEDs turning them up and down in 10 steps.
 * The PCA9685 chip is assumed to have PINS A0,A1 and A2 grounded (LOW) and A3,A4 and A5 set to VCC (5V, HIGH)
 * 
 * - kasper
 */

#include <Wire.h>
#include <PCA9685.h>


PCA9685 ledDriver; 

void setup()
{
  Serial.begin(9600); // set up serial
  Serial.println("Serial Started");

  Wire.begin();           // Wire must be started!
  ledDriver.begin(B111000);  // Address pins A5-A0 set to B111000
  ledDriver.init();


}

void loop()
{
  // Notice: setLEDDimmed cannot be used in a loop to give you a pleasant 
  // "turning-up" of the LED. This is because each time you set a level for a LED
  // it will calculate random timing intervals for the PWM function in the chip
  // This is done in order to distribute current consumptions of the full time period.
  
  for(int level=4000;level>=0;level--)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level);
      Serial.println(level,DEC)
      delay(10);     
    }
  }
} 

 

Имел в виду вот это.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Все работало без видимых глюков, при подключении светодиодов, для тестов непосредственно к pca9685. При подключении pca9685 к ldd700 (pwm драйверам светодиодов) выяснилось: 

- Необходимо инвертировать сигнал с pca9685 - кто может подсказать как?

- Ldd700 не совсем адекватно воспринимают pwm: 870 и более диоды погашены.

867 - минимальная яркость диодов. 830 и менее - практически полная яркость диодов.

- диоды горят со вспышками, при каждом цикле loop.

подозревал о связи вспышек с моментами

 

  Serial.println("d");
31   Serial.println(Sun);
32   Serial.println(day);
33   delay(50);
34    Serial.println("n");

выключил serial вообще - не помогает.

 

bwn
Offline
Зарегистрирован: 25.08.2014

Для начала попробуйте корректность работы ldd от обычного ШИМ ардуины без промежуточных узлов. Если все корректно, пробовать экспериментировать с предделителем на 9685. Не 4096, а 2048, 1024 и ниже. Потом уже с инверсией и вспышками разбиратся.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Я не очень понимаю в каком месте меняется настройка: "экспериментировать с предделителем на 9685. Не 4096, а 2048, 1024 и ниже."
На этом месте подробнее не опишете?

bwn
Offline
Зарегистрирован: 25.08.2014

SERgunCHIK пишет:
Я не очень понимаю в каком месте меняется настройка: "экспериментировать с предделителем на 9685. Не 4096, а 2048, 1024 и ниже." На этом месте подробнее не опишете?

Обманул, похоже не меняются они. Могу только посоветовать даташит курить и экспериментировать, я такого зверя в руках не держал, может кто то юзал, посоветует чего. Ну и драйвера проверьте все таки на корректность работы с ШИМ. Все бывает.

bwn
Offline
Зарегистрирован: 25.08.2014

SERgunCHIK пишет:

А не могли бы вы мне раскоментировать часть кода?

{
  // Notice: setLEDDimmed cannot be used in a loop to give you a pleasant 
  // "turning-up" of the LED. This is because each time you set a level for a LED
  // it will calculate random timing intervals for the PWM function in the chip
  // This is done in order to distribute current consumptions of the full time period.
  
  for(int level=5;level>=0;level--)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
  for(int level=0;level<=5;level++)  {
    for(int i=0; i<16; i++)  {
      ledDriver.setLEDDimmed(i,level*20);
      delay(100);     
    }
  }
} 

 

По предделителю этот пример навел на размышления. Здесь максимальное значение 100 из 4096 возможных, теоретически вообще не должно светить или еле видно в темноте. А у вас вроде нормально работало????

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Я извеняюсь за, вероятно глупый вопрос. Как редактировать библиотеки/драйвера?
я пытался блокнотом - не прокатывает, получается лишь читать.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Целый день пытаюсь вникнуть в суть библиотеки, примерно понимаю, но как это применять?...

Не раскоментируете по русски и понятно для новичка?

/*  PCA9685 LED library for Arduino
    Copyright (C) 2012 Kasper Skårhøj    <kasperskaarhoj@gmail.com> 

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#include "PCA9685.h"

PCA9685::PCA9685() {}

void PCA9685::begin(int i2cAddress) {
	_i2cAddress = PCA9685_I2C_BASE_ADDRESS | (i2cAddress & B00111111);
}
bool PCA9685::init() {

	delay(1);
	writeRegister(PCA9685_MODE1, (byte)0x01);	// reset the device

	delay(1);
	bool isOnline;
	if (readRegister(PCA9685_MODE1)==0x01)	{
		isOnline = true;
	} else {
		isOnline = false;
	}
	writeRegister(PCA9685_MODE1, (byte)B10100000);	// set up for auto increment
	writeRegister(PCA9685_MODE2, (byte)0x10);	// set to output
	
	return isOnline;
}

void PCA9685::setLEDOn(int ledNumber) {
	writeLED(ledNumber, 0x1000, 0);
}

void PCA9685::setLEDOff(int ledNumber) {
	writeLED(ledNumber, 0, 0x1000);
}

void PCA9685::setLEDDimmed(int ledNumber, byte amount) {		// Amount from 0-100 (off-on)
	if (amount==0)	{
		setLEDOff(ledNumber);
	} else if (amount>=100) {
		setLEDOn(ledNumber);
	} else {
		int randNumber = (int)random(4096);	// Randomize the phaseshift to distribute load. Good idea? Hope so.
		writeLED(ledNumber, randNumber, (int)(amount*41+randNumber) & 0xFFF);
	}
}

void PCA9685::writeLED(int ledNumber, word LED_ON, word LED_OFF) {	// LED_ON and LED_OFF are 12bit values (0-4095); ledNumber is 0-15
	if (ledNumber >=0 && ledNumber <= 15)	{
		
		Wire.beginTransmission(_i2cAddress);
		Wire.write(PCA9685_LED0 + 4*ledNumber);

		Wire.write(lowByte(LED_ON));
		Wire.write(highByte(LED_ON));
		Wire.write(lowByte(LED_OFF));
		Wire.write(highByte(LED_OFF));
		
		Wire.endTransmission();
	}
}


//PRIVATE
void PCA9685::writeRegister(int regAddress, byte data) {
	Wire.beginTransmission(_i2cAddress);
	Wire.write(regAddress);
	Wire.write(data);
	Wire.endTransmission();
}

word PCA9685::readRegister(int regAddress) {
	word returnword = 0x00;
	Wire.beginTransmission(_i2cAddress);
	Wire.write(regAddress);
	Wire.endTransmission();
	Wire.requestFrom((int)_i2cAddress, 1);
    
//    int c=0;
	//Wait for our 2 bytes to become available
	while (Wire.available()) {
        //high byte
//        if (c==0)   { returnword = Wire.read() << 8; }
        //low byte
  //      if (c==1)   { 
		returnword |= Wire.read(); 
		//}
        //c++;
    }
    
	return returnword;
}

 

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

В результате скетч получается такой:

//#include <ve_avr.h>
#include <Wire.h> // Библиотека I2C
#include <PCA9685.h> // Бибилиотека регистров 
int daypin = 14; // Таймер подключен к 14-му входу
int SunPin = 0;  // Потенциометр подключен 0-му аналоговому входу
int MoonPin = 1;  // Фоторезистор подключен 1-му аналоговому входу
int Sun = 0;// переменная для хранения значения входного напряжения
int Moon = 0;// переменная для хранения значения входного напряжения
int day = HIGH;
volatile int state = LOW;
PCA9685 ledDriver1;
PCA9685 ledDriver2;





void setup()
{
  Serial.begin(9600); // set up serial
  Serial.println("Serial Started");
  pinMode(daypin, INPUT_PULLUP);
  Wire.begin();           // Старт I2C
  ledDriver1.begin(B000001);
  ledDriver1.init();
  ledDriver2.begin(B000010);
  ledDriver2.init();
  // attachInterrupt(0, uint8_t, LOW); // привязываем 0-е прерывание к функции


}

void loop()
{
  {
    day = digitalRead(daypin);    // узнаём состояние кнопки
    Moon = analogRead(MoonPin);  // считываем значение с фоторезистора
    Sun = analogRead(SunPin);  // считываем значение с потенциометра
    Serial.println("d");
    Serial.println(Sun);
    Serial.println(day);
    delay(50);
    Serial.println("n");
    Serial.println(Moon);
    //Sun = Sun * 4;               // конвертируем из 0-1023 к 0-4096
    //Moon = Moon * 4;               // конвертируем из 0-1023 к 0-4096
  }
  {
    if (day == HIGH)
    {
      {
        ledDriver2.writeLED(0, 1023, 1023 - Sun); //белый, центр
        delay(50);
        ledDriver2.writeLED(1, 1023, 1023 - Sun); //белый 1 -
        delay(50);
        ledDriver2.writeLED(2, 1023, 1023 - Sun); //белый 2
        delay(50);
        ledDriver2.writeLED(3, 1023, 1023 - Sun); //белый 3 -
        delay(50);
        ledDriver2.writeLED(4, 1023, 1023 - Sun); //белый 4
        delay(50);
        ledDriver2.writeLED(5, 1023, 1023 - Sun); //белый 5
        delay(50);
        ledDriver2.writeLED(6, 1023, 1023 - Sun); //белый 6
        delay(50);
        ledDriver2.writeLED(7, 1023, 1023 - Sun); //белый 7
        delay(50);
        // ledDriver2.setLEDDimmed(8,1023); // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(9,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(10,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(11,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(12,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(13,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(14,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(15,1023);  // не используется
        //delay(100);
      }
      {
        ledDriver1.writeLED(0, 1023, 1018); // синий 1
        delay(50);
        ledDriver1.writeLED(1, 1023, 1018); // зеленый 1
        delay(50);
        ledDriver1.writeLED(2, 1023, 1022); // красный 1
        delay(50);
        ledDriver1.writeLED(3, 1023, 1018); // синий 2
        delay(50);
        ledDriver1.writeLED(4, 1023, 1018); // зеленый 2
        delay(50);
        ledDriver1.writeLED(5, 1023, 1022); // красный 2
        delay(50);
        ledDriver1.writeLED(6, 1023, 1018); // синий 3
        delay(50);
        ledDriver1.writeLED(7, 1023, 1018); // зеленый 3
        delay(50);
        ledDriver1.writeLED(8, 1023, 1022); // красный 3
        delay(50);
        ledDriver1.writeLED(9, 1023, 1018); // синий 4
        delay(50);
        ledDriver1.writeLED(10, 1023, 1018); // зеленый 4 -
        delay(50);
        ledDriver1.writeLED(11, 1023, 1022); // красный 4
        //delay(500);
        //ledDriver1.setLEDDimmed(12,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(13,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(14,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(15,1023);
        //delay(100);
      }
    }
    else
    {
      {
        ledDriver2.writeLED(0, 1023, 1010); //белый, центр
        delay(50);
        ledDriver2.setLEDDimmed(1, 1023);  //белый 1 -
        delay(50);
        ledDriver2.setLEDDimmed(2, 1023); //белый 2
        delay(50);
        ledDriver2.setLEDDimmed(3, 1023); //белый 3 -
        delay(50);
        ledDriver2.setLEDDimmed(4, 1023); //белый 4
        delay(50);
        ledDriver2.setLEDDimmed(5, 1023); //белый 5
        delay(50);
        ledDriver2.setLEDDimmed(6, 1023); //белый 6
        delay(50);
        ledDriver2.setLEDDimmed(7, 1023); //белый 7
        delay(50);
        // ledDriver2.setLEDDimmed(8,1023); // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(9,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(10,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(11,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(12,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(13,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(14,1023);  // не используется
        //delay(50);
        //ledDriver2.setLEDDimmed(15,1023);  // не используется
        //delay(100);
      }
      {
        ledDriver1.writeLED(0, 1023, 1018); // синий 1
        delay(50);
        ledDriver1.writeLED(1, 1023, 1018); // зеленый 1
        delay(50);
        ledDriver1.writeLED(2, 1023, 1022); // красный 1
        delay(50);
        ledDriver1.writeLED(3, 1023, 1018); // синий 2
        delay(50);
        ledDriver1.writeLED(4, 1023, 1018); // зеленый 2
        delay(50);
        ledDriver1.writeLED(5, 1023, 1022); // красный 2
        delay(50);
        ledDriver1.writeLED(6, 1023, 1018); // синий 3
        delay(50);
        ledDriver1.writeLED(7, 1023, 1018); // зеленый 3
        delay(50);
        ledDriver1.writeLED(8, 1023, 1022); // красный 3
        delay(50);
        ledDriver1.writeLED(9, 1023, 1018); // синий 4
        delay(50);
        ledDriver1.writeLED(10, 1023, 1018); // зеленый 4 -
        delay(50);
        ledDriver1.writeLED(11, 1023, 1022); // красный 4
        //delay(500);
        //ledDriver1.setLEDDimmed(12,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(13,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(14,1023);
        //delay(50);
        //ledDriver1.setLEDDimmed(15,1023);
        //delay(100);
      }
    }
     delay(100);

  }
}

Из "проблем" осталось лишь "перемигивание" со "скоростью delay(50)" всех каналов светодиодов.

Как я понимаю, необходимо пристроить сюда прерывание. Но вот оно то мне и не дается.

Может кто-нибудь подскажет КАК и в какое место тут пожно пристроить прерывание?

 

bwn
Offline
Зарегистрирован: 25.08.2014

Так а эти delay  с какой целью у вас вставлены?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

Лишь для визуального эфекта, при включении, при моем продвижении в понимании языка написания планируется их замена на функции типа "fade".

На этапе сейчас я могу их и закоментить.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

SERgunCHIK пишет:
Я извеняюсь за, вероятно глупый вопрос. Как редактировать библиотеки/драйвера? я пытался блокнотом - не прокатывает, получается лишь читать.

http://notepad-plus-plus.org/

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

jeka_tm пишет:

SERgunCHIK пишет:
Я извеняюсь за, вероятно глупый вопрос. Как редактировать библиотеки/драйвера? я пытался блокнотом - не прокатывает, получается лишь читать.

http://notepad-plus-plus.org/

Спасибо.

По вопросу #28 нет мыслей?

bwn
Offline
Зарегистрирован: 25.08.2014

SERgunCHIK пишет:

Лишь для визуального эфекта, при включении, при моем продвижении в понимании языка написания планируется их замена на функции типа "fade".

На этапе сейчас я могу их и закоментить.

Сейчас у вас получается, что с интервалом delay последовательно включаются каналы. Что вы хотите делать с помощью прерывания, тайна покрытая мраком))). Прерывание предназначено для обработки какого то события с приоритетом более высоким чем у основной программы.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я с этой микросхемой не работал. но если учитывать правильное подключение и рабочую либу то действительно непонятно зачем кучу delay воткнул. без этого не работает?

и нафига столько лишних скобок

то что день узнаешь с кнопки? то есть не в автоматическом режиме

bwn
Offline
Зарегистрирован: 25.08.2014

Если интересно можете посмотреть http://arduino.ru/forum/proekty/groekt-dlya-akvariuma-akvakontroller-dly...

Там тоже человек освещение для банки делает. Правда схема попроще. Сейчас причесывает.

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

delay воткнуты лишь для визуального эфекта, ввиду неумения написать типа fade под эти каналы.

Скобок "понавтыкал" по причине неопытности.

прерыванием я надеюсь остановить "перемигивание" каналов - каждый канал дает вспышку в момент когда "ардуина" задает его яркость, а она это делает по кругу.

(Заранее извиняюсь за корявое описание) 

bwn
Offline
Зарегистрирован: 25.08.2014

ledDriver2.writeLED(0, 1023, 1023 - Sun);

А что у вас делают магические цифры 2-й и 3-й номер? и какие у них рабочие пределы min-max?

SERgunCHIK
Offline
Зарегистрирован: 11.02.2015

bwn пишет:
ledDriver2.writeLED(0, 1023, 1023 - Sun); А что у вас делают магические цифры 2-й и 3-й номер? и какие у них рабочие пределы min-max?

0, - номер канала.

1023, - Х.З. но, при изменении яркость меняется по пока непонятному мне алгоритму.

1023 - Sun - яркость канала в зависимости от Sun (в инверсии). То есть "0" - выходит полная яркость, 1023 - Канал погашен. 

nikois6567
Offline
Зарегистрирован: 24.02.2015


Здравствуйте помогите разобраться пожалуйста.

Имею вот такой код нужно понять что за что отвечает в англиском не силен (переводчик непомогает) :

#include <avr/pgmspace.h>

/
//Bild_01 (Globus)
PROGMEM prog_uchar bild_01[] =
{
B00000010, B10100010, 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
};

//Bild_02 (Points)
PROGMEM prog_uchar bild_02[] =
{
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, 
... 
B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000
};

//Bild_03 (RGB-Net)
PROGMEM prog_uchar bild_03[] =
{
B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000, 
.... 
B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000
};



//############################################################################################################################################################
//Definitionen und Variablen                                                                                                                                 #
//############################################################################################################################################################

//Definition der Ausgangspins am µ-Controller
#define latchPin    10 // Latch-Pin
#define PIN_SCK     13 // SPI Clock
#define PIN_MISO    12 // SPI Dateneingang
#define PIN_MOSI    11 // SPI Datenausgang

#define debug_pin 8    // LED an Pin 8 zum Debuggen
#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
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)
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
  SPCR = B01010000; 
  
  //SPI Control Register (SPCR)
  
  // | 7    | 6    | 5    | 4    | 3    | 2    | 1    | 0    |
  // | SPIE | SPE  | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |

  // SPIE - Enables the SPI interrupt when 1
  // SPE  - Enables the SPI when 1
  // DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0
  // MSTR - Sets the Arduino in master mode when 1, slave mode when 0
  // CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0
  // CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0
  //SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)
  
  SPSR = B00000000; //SPI Status Register auf 0 setzen
    
  //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 == 4) {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
                break;
        case 2: for (int l=0; l<15; l++){SendRecSPI(pgm_read_byte_near(bild_02 + pointer + l));}      // 15 Byte für SR#15 bis SR#1 rausschieben
                break;
        case 3: for (int l=0; l<15; l++){SendRecSPI(pgm_read_byte_near(bild_03 + pointer + l));}      // 15 Byte für SR#15 bis SR#1 rausschieben
                break;           
        }
        
        digitalWrite(latchPin, HIGH);                                                         // LatchPin auf HIGH setzen und damit alle SR aktivieren
        
        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
  digitalWrite(latchPin, HIGH);                        // LatchPin auf HIGH setzen und damit alle SR aktivieren
  DisableSPI();
}

//############################################################################################################################################################
// Prozeduren für die 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
}

//############################################################################################################################################################
//############################################################################################################################################################
//############################################################################################################################################################

 

bwn
Offline
Зарегистрирован: 25.08.2014

А свернуть эту жуть, ну совсем никак?

vvadim
Offline
Зарегистрирован: 23.05.2012

А что, прочитать и вникнуть слабо?

Всего то 814 строк...

nikois6567
Offline
Зарегистрирован: 24.02.2015

Ребят начальство купило глобус просит разобраться как изменить какой либо эфект на их надпись и сменить продолжительность эфекта.

Помогите пожалуста

pastry777
Offline
Зарегистрирован: 16.01.2014

а как вы вытащили код с МК??

и тут не в английском надо соображать,а в немецком=))комметарии в скетче на немецком,если не ошибаюсь...переведите их,может что и прояснится..

для меня вообще понятие глобус,эта та круглая штука,что стояла на шкафу в кабинете географии и которую мы брали вместо баскетбольного мяча,когда учитель выходила из класса=))и как там в нем мог оказаться подобный код я никак не пойму..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

в англиском не силен (переводчик не помогает) :

.....немецкий там :)

эффекты-картинки-Bild_01 (Globus) - в массивах , время-скорость - кажися в

047 unsigned long sector_time = 20;  // Sektorzeit in µs

 

похоже на персистенцию.... поищите "VisionWand" , похожая штука....

или на табло с бегущей картинкой.....

дайте хоть фотку этого чЮда :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

массив    PROGMEM prog_uchar bild_01[]    - дайте сюда полностью, а можно и все три картинки

только при вставке кода в допЗакладке ставьте галочку СВЕРНУТЬ КОД !

pastry777
Offline
Зарегистрирован: 16.01.2014

судя по всему скетч полный,я и сам не мог понять где картинка,но видимо это все что есть

nikois6567
Offline
Зарегистрирован: 24.02.2015

//############################################################################################################################################################
//Externe Bibliotheken einbinden                                                                                                                             #
//############################################################################################################################################################

#include <avr/pgmspace.h>

//############################################################################################################################################################
//Programmspeicher beschreiben                                                                                                                               #
//############################################################################################################################################################

//Bild_01 (Globus)
PROGMEM prog_uchar bild_01[] =
{
  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
};

//Bild_02 (Points)
PROGMEM prog_uchar bild_02[] =
{
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000, B00000010,
  B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00010000, B00000100, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000,
  B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00010000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000001, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B01000000,
  B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00100000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000,
  B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000100,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000100, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000100, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000010, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00010000, B00010000, B00000000, B00000000, B00000000, B00010000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000100, B00000010, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000, B00000100, B00000010, B00000000,
  B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000100, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000, B00000000,
  B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000, B00001000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000000, B00000000, B00010000, B00000000, B00000000, B00000100, B00000000,
  B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00001000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000010, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B10000000, B00000000, B00000000, B00010000, B00000000, B00000100, B00000000, B00000000, B00000000, B00000000, B10000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
  B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00100000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000
};

//Bild_03 (RGB-Net)
PROGMEM prog_uchar bild_03[] =
{
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B10101000, B10101011, B10101010, B10101000, B10101010, B10101010, B10101010, B10101011, B10101000, B10100010, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B01010101, B01010101, B01010100, B01010101, B01011101, B01010111, B01010100, B01010101, B01010101, B01010101, B01010101, B01010100, B01010101, B01010111, B01011101,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B10101000, B10101010, B10101011, B10101010, B10101010,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B01010111, B01010100, B01010101, B01010101, B01010101, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B10101000, B10101011, B10101010, B10101000, B10101010, B00000010, B00000000, B00000001, B00000000, B00000000, B10101000, B10101010, B10101011, B10101010, B10101010,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B01010101, B01010101, B01010100, B01010101, B01011101, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001100,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B01010101, B01010101, B01010100, B01010101, B01011101, B01010111, B01010100, B01010101, B01010101, B01010101, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B10101000, B10101011, B10101010, B10101000, B10101010, B10101010, B10101010, B10101011, B10101000, B10100010, B10101000, B10101010, B10101011, B10101010, B10101010,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B01010101, B01010100, B01010101, B01010111, B01011101,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B10101010, B10101010, B10101011, B10101000, B10100010, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B01010101, B01010101, B01010100, B01010101, B01011101, B00000010, B00000000, B00000001, B00000000, B00000000, B01010101, B01010100, B01010101, B01010111, B01011101,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B10101000, B10101011, B10101010, B10101000, B10101010, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000,
  B00000000, B00000001, B00000000, B00000000, B00001000, B00000010, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000001, B00000010, B00001000
};



//############################################################################################################################################################
//Definitionen und Variablen                                                                                                                                 #
//############################################################################################################################################################

//Definition der Ausgangspins am Вµ-Controller
#define latchPin    10 // Latch-Pin
#define PIN_SCK     13 // SPI Clock
#define PIN_MISO    12 // SPI Dateneingang
#define PIN_MOSI    11 // SPI Datenausgang

#define debug_pin 8    // LED an Pin 8 zum Debuggen
#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
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)
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
  SPCR = B01010000;

  //SPI Control Register (SPCR)

  // | 7    | 6    | 5    | 4    | 3    | 2    | 1    | 0    |
  // | SPIE | SPE  | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 |

  // SPIE - Enables the SPI interrupt when 1
  // SPE  - Enables the SPI when 1
  // DORD - Sends data least Significant Bit First when 1, most Significant Bit first when 0
  // MSTR - Sets the Arduino in master mode when 1, slave mode when 0
  // CPOL - Sets the data clock to be idle when high if set to 1, idle when low if set to 0
  // CPHA - Samples data on the falling edge of the data clock when 1, rising edge when 0
  //SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz)

  SPSR = B00000000; //SPI Status Register auf 0 setzen

  //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 == 4) {
      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
        }
        break;
      case 2: for (int l = 0; l < 15; l++) {
          SendRecSPI(pgm_read_byte_near(bild_02 + pointer + l)); // 15 Byte fГјr SR#15 bis SR#1 rausschieben
        }
        break;
      case 3: for (int l = 0; l < 15; l++) {
          SendRecSPI(pgm_read_byte_near(bild_03 + pointer + l)); // 15 Byte fГјr SR#15 bis SR#1 rausschieben
        }
        break;
    }

    digitalWrite(latchPin, HIGH);                                                         // LatchPin auf HIGH setzen und damit alle SR aktivieren

    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
  }
  digitalWrite(latchPin, HIGH);                        // LatchPin auf HIGH setzen und damit alle SR aktivieren
  DisableSPI();
}

//############################################################################################################################################################
// Prozeduren fГјr die 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
}

//############################################################################################################################################################
//############################################################################################################################################################
//############################################################################################################################################################

 

Вот весь код какой есть.Как прикрепить фото не знаю

nikois6567
Offline
Зарегистрирован: 24.02.2015

При проверке кода выдает ошибку.

Arduino: 1.6.0 (Windows 7), Плата"Arduino Uno"
 
Globe_Firmware.ino:13:9: error: 'prog_uchar' does not name a type
Globe_Firmware.ino:218:9: error: 'prog_uchar' does not name a type
Globe_Firmware.ino:423:9: error: 'prog_uchar' does not name a type
In file included from Globe_Firmware.ino:6:0:
Globe_Firmware.ino: In function 'void loop()':
Globe_Firmware.ino:777:41: error: 'bild_01' was not declared in this scope
Globe_Firmware.ino:781:41: error: 'bild_02' was not declared in this scope
Globe_Firmware.ino:785:41: error: 'bild_03' was not declared in this scope
Ошибка компиляции.
 
  This report would have more information with
  "Отображать вывод во время компиляции"
  enabled in File > Preferences.
 
pastry777
Offline
Зарегистрирован: 16.01.2014

пожалуйста,установите версию Arduino IDE ниже чем 1.6.0,не нужна она в вашем случае...самое свежее не всегда самое лучшее..

а из ошибок ясно видно,что ругается только на массивы PROGMEM...но я не в силах в этом помочь,для самого темный лес еще эти PROGMEM,будем ждать знающих=)