Skip to content

Commit 62d63b4

Browse files
authored
Merge pull request #2692 from adafruit/memento_factory
add memento factory test
2 parents cb55f61 + 891d085 commit 62d63b4

File tree

2 files changed

+196
-0
lines changed

2 files changed

+196
-0
lines changed

Factory_Tests/Adafruit_MEMENTO_Factory_Test/.none.test.only

Whitespace-only changes.
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
// SPDX-FileCopyrightText: 2023 Limor Fried for Adafruit Industries
2+
//
3+
// SPDX-License-Identifier: MIT
4+
5+
#include <Arduino.h>
6+
#include "Adafruit_PyCamera.h"
7+
8+
Adafruit_PyCamera pycamera;
9+
framesize_t validSizes[] = {FRAMESIZE_QQVGA, FRAMESIZE_QVGA, FRAMESIZE_HVGA, FRAMESIZE_VGA, FRAMESIZE_SVGA, FRAMESIZE_XGA, FRAMESIZE_HD, FRAMESIZE_SXGA, FRAMESIZE_UXGA, FRAMESIZE_QXGA, FRAMESIZE_QSXGA};
10+
11+
// A colection of possible ring light colors
12+
uint32_t ringlightcolors_RGBW[] = {0x00000000, 0x00FF0000, 0x00FFFF00, 0x0000FF00, 0x0000FFFF, 0x000000FF, 0x00FF00FF, 0xFF000000};
13+
uint8_t ringlight_i = 0;
14+
uint8_t ringlightBrightness = 100;
15+
16+
#define IRQ 3
17+
18+
19+
void setup() {
20+
Serial.begin(115200);
21+
// while (!Serial) yield();
22+
delay(100);
23+
24+
if (! pycamera.begin()) {
25+
Serial.println("Failed to initialize pyCamera interface");
26+
while (1) yield();
27+
}
28+
Serial.println("pyCamera hardware initialized!");
29+
30+
pinMode(IRQ, INPUT_PULLUP);
31+
attachInterrupt(IRQ, [] {
32+
Serial.println("IRQ!");
33+
}, FALLING);
34+
}
35+
36+
void loop() {
37+
static uint8_t loopn=0;
38+
pycamera.setNeopixel(pycamera.Wheel(loopn));
39+
loopn += 8;
40+
41+
pycamera.readButtons();
42+
//Serial.printf("Buttons: 0x%08X\n\r", pycamera.readButtons());
43+
44+
//pycamera.timestamp();
45+
pycamera.captureFrame();
46+
47+
// once the frame is captured we can draw ontot he framebuffer
48+
if (pycamera.justPressed(AWEXP_SD_DET)) {
49+
50+
Serial.println(F("SD Card removed"));
51+
pycamera.endSD();
52+
pycamera.fb->setCursor(0, 32);
53+
pycamera.fb->setTextSize(2);
54+
pycamera.fb->setTextColor(pycamera.color565(255, 0, 0));
55+
pycamera.fb->print(F("SD Card removed"));
56+
delay(200);
57+
}
58+
if (pycamera.justReleased(AWEXP_SD_DET)) {
59+
Serial.println(F("SD Card inserted!"));
60+
pycamera.initSD();
61+
pycamera.fb->setCursor(0, 32);
62+
pycamera.fb->setTextSize(2);
63+
pycamera.fb->setTextColor(pycamera.color565(255, 0, 0));
64+
pycamera.fb->print(F("SD Card inserted"));
65+
delay(200);
66+
}
67+
68+
float A0_voltage = analogRead(A0) / 4096.0 * 3.3;
69+
if (loopn == 0) {
70+
Serial.printf("A0 = %0.1f V, Battery = %0.1f V\n\r",
71+
A0_voltage, pycamera.readBatteryVoltage());
72+
}
73+
pycamera.fb->setCursor(0,0);
74+
pycamera.fb->setTextSize(2);
75+
pycamera.fb->setTextColor(pycamera.color565(255, 255, 255));
76+
pycamera.fb->print("A0 = "); pycamera.fb->print(A0_voltage, 1);
77+
pycamera.fb->print("V\nBattery = "); pycamera.fb->print(pycamera.readBatteryVoltage(), 1);
78+
pycamera.fb->print(" V");
79+
80+
81+
// print the camera frame size
82+
pycamera.fb->setCursor(0, 200);
83+
pycamera.fb->setTextSize(2);
84+
pycamera.fb->setTextColor(pycamera.color565(255, 255, 255));
85+
pycamera.fb->print("Size:");
86+
switch (pycamera.photoSize) {
87+
case FRAMESIZE_QQVGA:
88+
pycamera.fb->print("160x120");
89+
break;
90+
case FRAMESIZE_QVGA:
91+
pycamera.fb->print("320x240");
92+
break;
93+
case FRAMESIZE_HVGA:
94+
pycamera.fb->print("480x320");
95+
break;
96+
case FRAMESIZE_VGA:
97+
pycamera.fb->print("640x480");
98+
break;
99+
case FRAMESIZE_SVGA:
100+
pycamera.fb->print("800x600");
101+
break;
102+
case FRAMESIZE_XGA:
103+
pycamera.fb->print("1024x768");
104+
break;
105+
case FRAMESIZE_HD:
106+
pycamera.fb->print("1280x720");
107+
break;
108+
case FRAMESIZE_SXGA:
109+
pycamera.fb->print("1280x1024");
110+
break;
111+
case FRAMESIZE_UXGA:
112+
pycamera.fb->print("1600x1200");
113+
break;
114+
case FRAMESIZE_QXGA:
115+
pycamera.fb->print("2048x1536");
116+
break;
117+
case FRAMESIZE_QSXGA:
118+
pycamera.fb->print("2560x1920");
119+
break;
120+
default:
121+
pycamera.fb->print("Unknown");
122+
break;
123+
}
124+
125+
float x_ms2, y_ms2, z_ms2;
126+
if (pycamera.readAccelData(&x_ms2, &y_ms2, &z_ms2)) {
127+
//Serial.printf("X=%0.2f, Y=%0.2f, Z=%0.2f\n\r", x_ms2, y_ms2, z_ms2);
128+
pycamera.fb->setCursor(0, 220);
129+
pycamera.fb->setTextSize(2);
130+
pycamera.fb->setTextColor(pycamera.color565(255, 255, 255));
131+
pycamera.fb->print("3D: "); pycamera.fb->print(x_ms2, 1);
132+
pycamera.fb->print(", "); pycamera.fb->print(y_ms2, 1);
133+
pycamera.fb->print(", "); pycamera.fb->print(z_ms2, 1);
134+
}
135+
136+
pycamera.blitFrame();
137+
138+
if (pycamera.justPressed(AWEXP_BUTTON_UP)) {
139+
Serial.println("Up!");
140+
for (int i = 0; i < sizeof(validSizes) / sizeof(framesize_t) - 1; ++i) {
141+
if (pycamera.photoSize == validSizes[i]) {
142+
pycamera.photoSize = validSizes[i + 1];
143+
break;
144+
}
145+
}
146+
}
147+
if (pycamera.justPressed(AWEXP_BUTTON_DOWN)) {
148+
Serial.println("Down!");
149+
for (int i = sizeof(validSizes) / sizeof(framesize_t) - 1; i > 0; --i) {
150+
if (pycamera.photoSize == validSizes[i]) {
151+
pycamera.photoSize = validSizes[i - 1];
152+
break;
153+
}
154+
}
155+
}
156+
157+
if (pycamera.justPressed(AWEXP_BUTTON_RIGHT)) {
158+
pycamera.specialEffect = (pycamera.specialEffect + 1) % 7;
159+
pycamera.setSpecialEffect(pycamera.specialEffect);
160+
Serial.printf("set effect: %d\n\r", pycamera.specialEffect);
161+
}
162+
if (pycamera.justPressed(AWEXP_BUTTON_LEFT)) {
163+
pycamera.specialEffect = (pycamera.specialEffect + 6) % 7;
164+
pycamera.setSpecialEffect(pycamera.specialEffect);
165+
Serial.printf("set effect: %d\n\r", pycamera.specialEffect);
166+
}
167+
168+
if (pycamera.justPressed(AWEXP_BUTTON_OK)) {
169+
// iterate through all the ring light colors
170+
ringlight_i = (ringlight_i + 1) % (sizeof(ringlightcolors_RGBW) / sizeof(uint32_t));
171+
pycamera.setRing(ringlightcolors_RGBW[ringlight_i]);
172+
Serial.printf("set ringlight: 0x%08X\n\r", (unsigned int)ringlightcolors_RGBW[ringlight_i]);
173+
}
174+
if (pycamera.justPressed(AWEXP_BUTTON_SEL)) {
175+
// iterate through brightness levels, incrementing 25 at a time
176+
if (ringlightBrightness >= 250) ringlightBrightness = 0;
177+
else ringlightBrightness += 50;
178+
pycamera.ring.setBrightness(ringlightBrightness);
179+
pycamera.setRing(ringlightcolors_RGBW[ringlight_i]);
180+
Serial.printf("set ringlight brightness: %d\n\r", ringlightBrightness);
181+
}
182+
183+
if (pycamera.justPressed(SHUTTER_BUTTON)) {
184+
Serial.println("Snap!");
185+
if (pycamera.takePhoto("IMAGE", pycamera.photoSize)) {
186+
pycamera.fb->setCursor(120, 100);
187+
pycamera.fb->setTextSize(2);
188+
pycamera.fb->setTextColor(pycamera.color565(255, 255, 255));
189+
pycamera.fb->print("Snap!");
190+
pycamera.speaker_tone(100, 50); // tone1 - B5
191+
//pycamera.blitFrame();
192+
}
193+
}
194+
195+
delay(100);
196+
}

0 commit comments

Comments
 (0)