171 lines
5.4 KiB
C++
171 lines
5.4 KiB
C++
/*
|
|
|
|
GraphicsTest.ino
|
|
|
|
Some graphics/text output for U8x8 API
|
|
|
|
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
|
|
|
|
Copyright (c) 2016, olikraus@gmail.com
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
are permitted provided that the following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above copyright notice, this list
|
|
of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
list of conditions and the following disclaimer in the documentation and/or other
|
|
materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
#include <Arduino.h>
|
|
#include <U8x8lib.h>
|
|
|
|
#ifdef U8X8_HAVE_HW_SPI
|
|
#include <SPI.h>
|
|
#endif
|
|
#ifdef U8X8_HAVE_HW_I2C
|
|
#include <Wire.h>
|
|
#endif
|
|
|
|
|
|
// Please UNCOMMENT one of the contructor lines below
|
|
// U8x8 Contructor List
|
|
// The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8x8setupcpp
|
|
// Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
|
|
//U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
//U8X8_SSD1306_128X64_NONAME_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
//U8X8_SSD1306_128X64_NONAME_3W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* reset=*/ 8);
|
|
//U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 2, /* data=*/ 0, /* reset=*/ U8X8_PIN_NONE); /* Digispark ATTiny85 */
|
|
//U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
|
|
//U8X8_SSD1306_128X32_UNIVISION_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
|
|
//U8X8_SSD1306_128X32_UNIVISION_SW_I2C u8x8(/* clock=*/ 21, /* data=*/ 20, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather M0 Basic Proto + FeatherWing OLED
|
|
//U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
|
|
//U8X8_SSD1306_128X64_NONAME_6800 u8x8(13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8);
|
|
//U8X8_SSD1306_128X64_NONAME_8080 u8x8(13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8);
|
|
//U8X8_ST7920_192X32_8080 u8x8(8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ U8X8_PIN_NONE, /*dc=*/ 17, /*reset=*/ U8X8_PIN_NONE);
|
|
//U8X8_ST7920_192X32_6800 u8x8(8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ U8X8_PIN_NONE, /*dc=*/ 17, /*reset=*/ U8X8_PIN_NONE);
|
|
//U8X8_UC1701_DOGS102_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
//U8X8_UC1701_DOGS102_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
//U8X8_ST7565_DOGM128_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
U8X8_ST7565_DOGM128_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
|
|
|
|
// End of constructor list
|
|
|
|
|
|
void setup(void)
|
|
{
|
|
u8x8.begin();
|
|
}
|
|
|
|
void pre(void)
|
|
{
|
|
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
|
|
u8x8.clear();
|
|
|
|
u8x8.inverse();
|
|
u8x8.print(" U8x8 Library ");
|
|
u8x8.setFont(u8x8_font_chroma48medium8_r);
|
|
u8x8.noInverse();
|
|
u8x8.setCursor(0,1);
|
|
}
|
|
|
|
void draw_bar(uint8_t c, uint8_t is_inverse)
|
|
{
|
|
uint8_t r;
|
|
u8x8.setInverseFont(is_inverse);
|
|
for( r = 0; r < u8x8.getRows(); r++ )
|
|
{
|
|
u8x8.setCursor(c, r);
|
|
u8x8.print(" ");
|
|
}
|
|
}
|
|
|
|
void draw_ascii_row(uint8_t r, int start)
|
|
{
|
|
int a;
|
|
uint8_t c;
|
|
for( c = 0; c < u8x8.getCols(); c++ )
|
|
{
|
|
u8x8.setCursor(c,r);
|
|
a = start + c;
|
|
if ( a <= 255 )
|
|
u8x8.write(a);
|
|
}
|
|
}
|
|
|
|
void loop(void)
|
|
{
|
|
int i;
|
|
uint8_t c, r, d;
|
|
pre();
|
|
u8x8.print("github.com/");
|
|
u8x8.setCursor(0,2);
|
|
u8x8.print("olikraus/u8g2");
|
|
delay(2000);
|
|
u8x8.setCursor(0,3);
|
|
u8x8.print("Tile size:");
|
|
u8x8.print((int)u8x8.getCols());
|
|
u8x8.print("x");
|
|
u8x8.print((int)u8x8.getRows());
|
|
|
|
delay(2000);
|
|
pre();
|
|
|
|
for( i = 19; i > 0; i-- )
|
|
{
|
|
u8x8.setCursor(3,2);
|
|
u8x8.print(i);
|
|
u8x8.print(" ");
|
|
delay(200);
|
|
}
|
|
|
|
draw_bar(0, 1);
|
|
for( c = 1; c < u8x8.getCols(); c++ )
|
|
{
|
|
draw_bar(c, 1);
|
|
draw_bar(c-1, 0);
|
|
delay(50);
|
|
}
|
|
draw_bar(u8x8.getCols()-1, 0);
|
|
|
|
pre();
|
|
u8x8.setFont(u8x8_font_amstrad_cpc_extended_f);
|
|
for( d = 0; d < 8; d ++ )
|
|
{
|
|
for( r = 1; r < u8x8.getRows(); r++ )
|
|
{
|
|
draw_ascii_row(r, (r-1+d)*u8x8.getCols() + 32);
|
|
}
|
|
delay(1000);
|
|
}
|
|
|
|
draw_bar(u8x8.getCols()-1, 1);
|
|
for( c = u8x8.getCols()-1; c > 0; c--)
|
|
{
|
|
draw_bar(c-1, 1);
|
|
draw_bar(c, 0);
|
|
delay(50);
|
|
}
|
|
draw_bar(0, 0);
|
|
|
|
|
|
}
|
|
|