-
-
Save mwiemarc/fa7d6d06cf55531dab306782cb8f5d7e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/********************************************************************* | |
This is an example for our Monochrome OLEDs based on SSD1306 drivers | |
Pick one up today in the adafruit shop! | |
------> http://www.adafruit.com/category/63_98 | |
This example is for a 128x64 size display using I2C to communicate | |
3 pins are required to interface (2 I2C and one reset) | |
Adafruit invests time and resources providing this open source code, | |
please support Adafruit and open-source hardware by purchasing | |
products from Adafruit! | |
Written by Limor Fried/Ladyada for Adafruit Industries. | |
BSD license, check license.txt for more information | |
All text above, and the splash screen must be included in any redistribution | |
*********************************************************************/ | |
#include <SPI.h> | |
#include <Wire.h> | |
#include "Adafruit_GFX.h" | |
#include <Adafruit_SSD1306.h> | |
Adafruit_SSD1306 display(-1); | |
#define LOGO16_GLCD_HEIGHT 16 | |
#define LOGO16_GLCD_WIDTH 16 | |
int hSpin = 60; | |
int vSpin = 32; | |
int vSpin2 = 70; | |
int SpinRadius = 60; | |
void setup() { | |
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64) | |
display.clearDisplay(); | |
} | |
void loop(){ | |
for(int i=60; i>0; i--){ //Change loop to "for(int i=0; i<60; i++){" to spin clockwise | |
display.fillRect(0, 0, 128, 64, BLACK); //Blanks out last frame to black | |
display.setTextColor(WHITE); | |
float SpinAngle = i * 6; | |
SpinAngle = SpinAngle / 57.296; | |
float SpinAngle2 = SpinAngle + 90 / 57.296; | |
int a = (hSpin + (sin(SpinAngle) * (SpinRadius / 2))); | |
int b = (vSpin - (cos(SpinAngle) * (SpinRadius / 2)))/2; | |
int c = (hSpin - (sin(SpinAngle) * (SpinRadius / 2))); | |
int d = (vSpin + (cos(SpinAngle) * (SpinRadius / 2)))/2; | |
int a1 = (hSpin + (sin(SpinAngle2) * (SpinRadius / 2))); | |
int b1 = (vSpin - (cos(SpinAngle2) * (SpinRadius / 2)))/2; | |
int c1 = (hSpin - (sin(SpinAngle2) * (SpinRadius / 2))); | |
int d1 = (vSpin + (cos(SpinAngle2) * (SpinRadius / 2)))/2; | |
int e = (hSpin + (sin(SpinAngle) * (SpinRadius / 2))); | |
int f = (vSpin2 - (cos(SpinAngle) * (SpinRadius / 2)))/2; | |
int g = (hSpin - (sin(SpinAngle) * (SpinRadius / 2))); | |
int h = (vSpin2 + (cos(SpinAngle) * (SpinRadius / 2)))/2; | |
int e1 = (hSpin + (sin(SpinAngle2) * (SpinRadius / 2))); | |
int f1 = (vSpin2 - (cos(SpinAngle2) * (SpinRadius / 2)))/2; | |
int g1 = (hSpin - (sin(SpinAngle2) * (SpinRadius / 2))); | |
int h1 = (vSpin2 + (cos(SpinAngle2) * (SpinRadius / 2)))/2; | |
display.drawLine(a,b,a1,b1,WHITE); | |
display.drawLine(a1,b1,c,d,WHITE); | |
display.drawLine(c,d,c1,d1,WHITE); | |
display.drawLine(c1,d1,a,b,WHITE); | |
display.drawLine(e,f,e1,f1,WHITE); | |
display.drawLine(e1,f1,g,h,WHITE); | |
display.drawLine(g,h,g1,h1,WHITE); | |
display.drawLine(g1,h1,e,f,WHITE); | |
display.drawLine(a,b,e,f,WHITE); | |
display.drawLine(g,h,c,d,WHITE); | |
display.drawLine(a1,b1,e1,f1,WHITE); | |
display.drawLine(g1,h1,c1,d1,WHITE); | |
display.display(); // refresh screen | |
delay(5); //Set delay to 1000 and mimick second hand movement | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment