Components and supplies
1
Arduino UNO
1
Standard LCD - 16x2 White on Blue
1
Resistor 220 ohm
Apps and platforms
1
Custom Glyph Generator
1
Arduino IDE
Project description
Code
Butterfly Metamorphosis Animation
arduino
This is example code (the code behind the butterfly metamorphosis animation from the gif).
1/* 2 butterfly metamorphosis animation 3 4 2021 ~ by tusindfryd 5 this code is in public domain 6*/ 7 8#include <LiquidCrystal.h> 9LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7 10void setup() 11{ 12 lcd.begin(16, 2); 13} 14void loop() 15{ 16 image00(); 17 delay(250); 18 image01(); 19 delay(250); 20 image02(); 21 delay(250); 22 image03(); 23 delay(700); 24 image04(); 25 delay(250); 26 image05(); 27 delay(250); 28 image06(); 29 delay(700); 30 image07(); 31 delay(1250); 32} 33 34void image00() 35{ 36 lcd.clear(); 37 38 byte image22[8] = {B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; 39 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 40 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 41 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 42 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 43 44 lcd.createChar(0, image22); 45 lcd.createChar(1, image23); 46 lcd.createChar(2, image07); 47 lcd.createChar(3, image08); 48 lcd.createChar(4, image09); 49 50 lcd.setCursor(5, 1); 51 lcd.write(byte(0)); 52 lcd.setCursor(6, 1); 53 lcd.write(byte(1)); 54 lcd.setCursor(6, 0); 55 lcd.write(byte(2)); 56 lcd.setCursor(7, 0); 57 lcd.write(byte(3)); 58 lcd.setCursor(8, 0); 59 lcd.write(byte(4)); 60} 61 62void image01() 63{ 64 lcd.clear(); 65 66 byte image22[8] = {B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; 67 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 68 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; 69 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 70 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 71 byte image06[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; 72 73 lcd.createChar(0, image22); 74 lcd.createChar(1, image23); 75 lcd.createChar(2, image07); 76 lcd.createChar(3, image08); 77 lcd.createChar(4, image09); 78 lcd.createChar(5, image06); 79 80 lcd.setCursor(5, 1); 81 lcd.write(byte(0)); 82 lcd.setCursor(6, 1); 83 lcd.write(byte(1)); 84 lcd.setCursor(6, 0); 85 lcd.write(byte(2)); 86 lcd.setCursor(7, 0); 87 lcd.write(byte(3)); 88 lcd.setCursor(8, 0); 89 lcd.write(byte(4)); 90 lcd.setCursor(5, 0); 91 lcd.write(byte(5)); 92} 93 94void image02() 95{ 96 lcd.clear(); 97 98 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 99 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 100 byte image07[8] = {B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; 101 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 102 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 103 104 lcd.createChar(0, image22); 105 lcd.createChar(1, image23); 106 lcd.createChar(2, image07); 107 lcd.createChar(3, image08); 108 lcd.createChar(4, image09); 109 110 lcd.setCursor(5, 1); 111 lcd.write(byte(0)); 112 lcd.setCursor(6, 1); 113 lcd.write(byte(1)); 114 lcd.setCursor(6, 0); 115 lcd.write(byte(2)); 116 lcd.setCursor(7, 0); 117 lcd.write(byte(3)); 118 lcd.setCursor(8, 0); 119 lcd.write(byte(4)); 120} 121 122void image03() 123{ 124 lcd.clear(); 125 126 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 127 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 128 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 129 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 130 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 131 byte image24[8] = {B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; 132 133 lcd.createChar(0, image22); 134 lcd.createChar(1, image23); 135 lcd.createChar(2, image07); 136 lcd.createChar(3, image08); 137 lcd.createChar(4, image09); 138 lcd.createChar(5, image24); 139 140 lcd.setCursor(5, 1); 141 lcd.write(byte(0)); 142 lcd.setCursor(6, 1); 143 lcd.write(byte(1)); 144 lcd.setCursor(6, 0); 145 lcd.write(byte(2)); 146 lcd.setCursor(7, 0); 147 lcd.write(byte(3)); 148 lcd.setCursor(8, 0); 149 lcd.write(byte(4)); 150 lcd.setCursor(7, 1); 151 lcd.write(byte(5)); 152} 153 154void image04() 155{ 156 lcd.clear(); 157 158 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 159 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; 160 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 161 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 162 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 163 byte image24[8] = {B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; 164 byte image25[8] = {B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; 165 166 lcd.createChar(0, image22); 167 lcd.createChar(1, image23); 168 lcd.createChar(2, image07); 169 lcd.createChar(3, image08); 170 lcd.createChar(4, image09); 171 lcd.createChar(5, image24); 172 lcd.createChar(6, image25); 173 174 lcd.setCursor(5, 1); 175 lcd.write(byte(0)); 176 lcd.setCursor(6, 1); 177 lcd.write(byte(1)); 178 lcd.setCursor(6, 0); 179 lcd.write(byte(2)); 180 lcd.setCursor(7, 0); 181 lcd.write(byte(3)); 182 lcd.setCursor(8, 0); 183 lcd.write(byte(4)); 184 lcd.setCursor(7, 1); 185 lcd.write(byte(5)); 186 lcd.setCursor(8, 1); 187 lcd.write(byte(6)); 188} 189 190void image05() 191{ 192 lcd.clear(); 193 194 byte image24[8] = {B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; 195 byte image25[8] = {B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; 196 byte image23[8] = {B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; 197 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; 198 byte image08[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; 199 200 lcd.createChar(0, image24); 201 lcd.createChar(1, image25); 202 lcd.createChar(2, image23); 203 lcd.createChar(3, image07); 204 lcd.createChar(4, image08); 205 206 lcd.setCursor(7, 1); 207 lcd.write(byte(0)); 208 lcd.setCursor(8, 1); 209 lcd.write(byte(1)); 210 lcd.setCursor(6, 1); 211 lcd.write(byte(2)); 212 lcd.setCursor(6, 0); 213 lcd.write(byte(3)); 214 lcd.setCursor(7, 0); 215 lcd.write(byte(4)); 216} 217 218void image06() 219{ 220 lcd.clear(); 221 222 byte image08[8] = {B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 223 byte image07[8] = {B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 224 byte image09[8] = {B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; 225 byte image24[8] = {B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; 226 byte image25[8] = {B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; 227 228 lcd.createChar(0, image08); 229 lcd.createChar(1, image07); 230 lcd.createChar(2, image09); 231 lcd.createChar(3, image24); 232 lcd.createChar(4, image25); 233 234 lcd.setCursor(7, 0); 235 lcd.write(byte(0)); 236 lcd.setCursor(6, 0); 237 lcd.write(byte(1)); 238 lcd.setCursor(8, 0); 239 lcd.write(byte(2)); 240 lcd.setCursor(7, 1); 241 lcd.write(byte(3)); 242 lcd.setCursor(8, 1); 243 lcd.write(byte(4)); 244} 245 246void image07() 247{ 248 lcd.clear(); 249 250 byte image24[8] = {B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; 251 byte image08[8] = {B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 252 byte image07[8] = {B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 253 byte image09[8] = {B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; 254 255 lcd.createChar(0, image24); 256 lcd.createChar(1, image08); 257 lcd.createChar(2, image07); 258 lcd.createChar(3, image09); 259 260 lcd.setCursor(7, 1); 261 lcd.write(byte(0)); 262 lcd.setCursor(7, 0); 263 lcd.write(byte(1)); 264 lcd.setCursor(6, 0); 265 lcd.write(byte(2)); 266 lcd.setCursor(8, 0); 267 lcd.write(byte(3)); 268}
Butterfly Metamorphosis Animation
arduino
This is example code (the code behind the butterfly metamorphosis animation from the gif).
1/* 2 butterfly metamorphosis animation 3 4 2021 ~ by tusindfryd 5 this code is in public domain 6*/ 7 8#include <LiquidCrystal.h> 9LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7 10void setup() 11{ 12 lcd.begin(16, 2); 13} 14void loop() 15{ 16 image00(); 17 delay(250); 18 image01(); 19 delay(250); 20 image02(); 21 delay(250); 22 image03(); 23 delay(700); 24 image04(); 25 delay(250); 26 image05(); 27 delay(250); 28 image06(); 29 delay(700); 30 image07(); 31 delay(1250); 32} 33 34void image00() 35{ 36 lcd.clear(); 37 38 byte image22[8] = {B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; 39 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 40 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 41 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 42 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 43 44 lcd.createChar(0, image22); 45 lcd.createChar(1, image23); 46 lcd.createChar(2, image07); 47 lcd.createChar(3, image08); 48 lcd.createChar(4, image09); 49 50 lcd.setCursor(5, 1); 51 lcd.write(byte(0)); 52 lcd.setCursor(6, 1); 53 lcd.write(byte(1)); 54 lcd.setCursor(6, 0); 55 lcd.write(byte(2)); 56 lcd.setCursor(7, 0); 57 lcd.write(byte(3)); 58 lcd.setCursor(8, 0); 59 lcd.write(byte(4)); 60} 61 62void image01() 63{ 64 lcd.clear(); 65 66 byte image22[8] = {B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; 67 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 68 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; 69 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 70 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 71 byte image06[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; 72 73 lcd.createChar(0, image22); 74 lcd.createChar(1, image23); 75 lcd.createChar(2, image07); 76 lcd.createChar(3, image08); 77 lcd.createChar(4, image09); 78 lcd.createChar(5, image06); 79 80 lcd.setCursor(5, 1); 81 lcd.write(byte(0)); 82 lcd.setCursor(6, 1); 83 lcd.write(byte(1)); 84 lcd.setCursor(6, 0); 85 lcd.write(byte(2)); 86 lcd.setCursor(7, 0); 87 lcd.write(byte(3)); 88 lcd.setCursor(8, 0); 89 lcd.write(byte(4)); 90 lcd.setCursor(5, 0); 91 lcd.write(byte(5)); 92} 93 94void image02() 95{ 96 lcd.clear(); 97 98 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 99 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 100 byte image07[8] = {B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; 101 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; 102 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 103 104 lcd.createChar(0, image22); 105 lcd.createChar(1, image23); 106 lcd.createChar(2, image07); 107 lcd.createChar(3, image08); 108 lcd.createChar(4, image09); 109 110 lcd.setCursor(5, 1); 111 lcd.write(byte(0)); 112 lcd.setCursor(6, 1); 113 lcd.write(byte(1)); 114 lcd.setCursor(6, 0); 115 lcd.write(byte(2)); 116 lcd.setCursor(7, 0); 117 lcd.write(byte(3)); 118 lcd.setCursor(8, 0); 119 lcd.write(byte(4)); 120} 121 122void image03() 123{ 124 lcd.clear(); 125 126 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 127 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; 128 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 129 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 130 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 131 byte image24[8] = {B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; 132 133 lcd.createChar(0, image22); 134 lcd.createChar(1, image23); 135 lcd.createChar(2, image07); 136 lcd.createChar(3, image08); 137 lcd.createChar(4, image09); 138 lcd.createChar(5, image24); 139 140 lcd.setCursor(5, 1); 141 lcd.write(byte(0)); 142 lcd.setCursor(6, 1); 143 lcd.write(byte(1)); 144 lcd.setCursor(6, 0); 145 lcd.write(byte(2)); 146 lcd.setCursor(7, 0); 147 lcd.write(byte(3)); 148 lcd.setCursor(8, 0); 149 lcd.write(byte(4)); 150 lcd.setCursor(7, 1); 151 lcd.write(byte(5)); 152} 153 154void image04() 155{ 156 lcd.clear(); 157 158 byte image22[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; 159 byte image23[8] = {B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; 160 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; 161 byte image08[8] = {B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; 162 byte image09[8] = {B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; 163 byte image24[8] = {B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; 164 byte image25[8] = {B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; 165 166 lcd.createChar(0, image22); 167 lcd.createChar(1, image23); 168 lcd.createChar(2, image07); 169 lcd.createChar(3, image08); 170 lcd.createChar(4, image09); 171 lcd.createChar(5, image24); 172 lcd.createChar(6, image25); 173 174 lcd.setCursor(5, 1); 175 lcd.write(byte(0)); 176 lcd.setCursor(6, 1); 177 lcd.write(byte(1)); 178 lcd.setCursor(6, 0); 179 lcd.write(byte(2)); 180 lcd.setCursor(7, 0); 181 lcd.write(byte(3)); 182 lcd.setCursor(8, 0); 183 lcd.write(byte(4)); 184 lcd.setCursor(7, 1); 185 lcd.write(byte(5)); 186 lcd.setCursor(8, 1); 187 lcd.write(byte(6)); 188} 189 190void image05() 191{ 192 lcd.clear(); 193 194 byte image24[8] = {B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; 195 byte image25[8] = {B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; 196 byte image23[8] = {B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; 197 byte image07[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; 198 byte image08[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; 199 200 lcd.createChar(0, image24); 201 lcd.createChar(1, image25); 202 lcd.createChar(2, image23); 203 lcd.createChar(3, image07); 204 lcd.createChar(4, image08); 205 206 lcd.setCursor(7, 1); 207 lcd.write(byte(0)); 208 lcd.setCursor(8, 1); 209 lcd.write(byte(1)); 210 lcd.setCursor(6, 1); 211 lcd.write(byte(2)); 212 lcd.setCursor(6, 0); 213 lcd.write(byte(3)); 214 lcd.setCursor(7, 0); 215 lcd.write(byte(4)); 216} 217 218void image06() 219{ 220 lcd.clear(); 221 222 byte image08[8] = {B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 223 byte image07[8] = {B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 224 byte image09[8] = {B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; 225 byte image24[8] = {B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; 226 byte image25[8] = {B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; 227 228 lcd.createChar(0, image08); 229 lcd.createChar(1, image07); 230 lcd.createChar(2, image09); 231 lcd.createChar(3, image24); 232 lcd.createChar(4, image25); 233 234 lcd.setCursor(7, 0); 235 lcd.write(byte(0)); 236 lcd.setCursor(6, 0); 237 lcd.write(byte(1)); 238 lcd.setCursor(8, 0); 239 lcd.write(byte(2)); 240 lcd.setCursor(7, 1); 241 lcd.write(byte(3)); 242 lcd.setCursor(8, 1); 243 lcd.write(byte(4)); 244} 245 246void image07() 247{ 248 lcd.clear(); 249 250 byte image24[8] = {B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; 251 byte image08[8] = {B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; 252 byte image07[8] = {B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; 253 byte image09[8] = {B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; 254 255 lcd.createChar(0, image24); 256 lcd.createChar(1, image08); 257 lcd.createChar(2, image07); 258 lcd.createChar(3, image09); 259 260 lcd.setCursor(7, 1); 261 lcd.write(byte(0)); 262 lcd.setCursor(7, 0); 263 lcd.write(byte(1)); 264 lcd.setCursor(6, 0); 265 lcd.write(byte(2)); 266 lcd.setCursor(8, 0); 267 lcd.write(byte(3)); 268}
Downloadable files
Connecting the LCD to the Arduino
Connecting the LCD to the Arduino

Comments
Only logged in users can leave comments