Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

HSVClock

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Seeed 2,8" TFT Touch Shield (V1.0)
× 1

Über dieses Projekt

HSV-Uhr

Als ich das letzte Mal in den USA war, habe ich ein Seeed 2,8" TFT Touch Shield (V1.0) von einem RadioShack mitgenommen. Ich habe damit eine bunte Uhr für meinen Vater zu seinem 80. Geburtstag gebastelt.

HSVClock.zipYouTube

Die wichtigsten Punkte sind

  • Das Zifferblatt basiert auf einem Raster rechteckiger Zellen. Die Zellenecken werden durch kleine zufällige Beträge verzerrt und jede Zelle wird durch eine zufällige Diagonale geteilt. Eine zufällige Verteilung von Farben wird auf die Zellen angewendet und jedes Dreieck wird schattiert, um einen 3D-Look zu erhalten. Intern werden die Farben als HSV (Hue, Saturation &Value) dargestellt, aber zum Senden an das LCD in RGB umgewandelt. Die Zeit wird mit einer einfachen Schriftart angezeigt, indem bestimmte Zellen in den Komplementärfarben eingefärbt werden.
  • Das Gehäuse ist lasergeschnittener Bambus, entworfen in Inkscape, geschnitten von Ponoko.
  • Leider hat das Schild keine Befestigungslöcher so klemme ich es effektiv gegen die Vorderseite in das Gehäuse. Über die Header-Pins sitzt ein Arduino Uno huckepack auf dem Schild.
  • Ich brauchte I2C-Zugriff auf eine externe Echtzeituhr (DS3232). Die Abschirmung legt keine unbenutzten Pins frei, daher habe ich ein Uno verwendet, das zusätzliche SDA / SCL-Pins hat. Ich habe für diese einen Low-Profile-Header-Anschluss hergestellt, der unter der Abschirmung sitzt. Ich habe Strom und Masse von einem ähnlichen Anschluss an den ICSP-Pins gezogen, auch unter der Abschirmung.
  • Ich habe die einfache Sommerzeit hinzugefügt Unterstützung der Skizze (zweimal im Jahr eine Uhr weniger zu stellen!). Anstatt sich mit Logik wie „der letzte Sonntag im September“ zu befassen, basiert es auf einer kleinen Tabelle mit spezifischen Start- und Enddaten für zukünftige Jahre (in meinem Fall für Neuseeland).
  • Ich habe den Touch-Bibliothekscode vereinfacht, um den Touchscreen zu erstellen fungieren Sie einfach als 4x4-Gitter aus entprellten Schaltflächen. Die Uhrzeit wird beispielsweise durch Berühren der unteren linken und oberen rechten Ecke eingestellt.
  • Ich habe einige ziemlich heroische Anstrengungen unternommen, um zu beschleunigen das Rendering:Ein Repaint der Zellen dauert etwa eine Viertelsekunde. Das Rendering basiert auf dem Schreiben horizontaler Pixelreihen einer bestimmten Farbe. Ich verwende einen modifizierten Bresenham-Algorithmus, um die horizontalen Ausdehnungen einer Reihe von Linienpaaren zu berechnen, die Dreiecke einer gegebenen Zelle bilden. Der Code, der die Pixel an das LCD sendet, basiert auf der Bibliothek, ist jedoch inline, ausgerollt, vereinfacht und optimiert. Da Pixelfarbdaten über mehrere PORTx geschrieben werden, werden alle Werte bei Auswahl der Farbe vorberechnet, sodass die Einstellung von N Pixeln hintereinander auf diese Farbe schneller ist.
  • Das LCD wird im Querformat verwendet . Ich habe lange gekämpft, um den Bildschirm in horizontalen Reihen zu aktualisieren. Das Datenblatt des Controllers ist verwirrend. Es gibt Befehle zum Einstellen der „Cursor“-Position, „DRAM Horizontal/Vertical Address Set (R20h, R21h)“. Pixeldaten werden an der Cursorposition geschrieben und der Cursor aktualisiert, bei Bedarf in die nächste Zeile umgebrochen usw. Es gibt auch einen Befehl zum Ändern der Bildschirmausrichtung, "Eingabemodus (R03h)", der auch über das Anpassen der Cursorzeile und -spalte spricht Schritte. Ich habe jedoch festgestellt, dass das Ändern der Ausrichtung in Querformat und das Positionieren des Cursors nicht funktioniert. Die Lösung, die ich schließlich gefunden habe (die möglicherweise im Datenblatt vergraben ist), besteht darin, den Befehl "window" anstelle des Cursorbefehls zu verwenden; „Horizontale und vertikale RAM-Adressposition (R50h, R51h, R52h, R53h)“. Das Festlegen der Koordinaten der oberen linken Ecke des Fensters bedeutet, dass die Pixeldaten dort beginnen und horizontal (im Querformat) aktualisiert werden.

Schaltung

Die Schaltung ist einfach

  • der auf dem Uno montierte TFT-Schild.
  • +5VDC, Ground, SDA &SDL gehen von den beschrifteten Pins am Uno zum RTC-Modul. In den ersten drei Fotos unten gezeigt (Schild entfernt). Beachten Sie, dass Strom/Masse aus Zugangsgründen vom ICSP1-Anschluss kommt.
Fritzing
      Fotos

      Herstellungsprozess

      1. Kazoo
      2. Harfe
      3. Expandierter Polystyrolschaum (EPF)
      4. Raspberry Pi-Sensoren
      5. Roboter mit Raspberry Pi und Bridge Shield
      6. Webbetriebener DMX-Controller
      7. Was ist ein Fadenabschneider?
      8. Was ist ein Steinbruch?
      9. Was ist ein Skelettschlüssel?
      10. Stickstofferzeugung in Laboratorien