Teensy 4.0 を楽しんでみた
Teensy 4.0を購入しました。なんと動作周波数 600MHzです。
いいおかずが来ました。 pic.twitter.com/6rH68FHKED
— HomeMadeGarbage (@H0meMadeGarbage) September 7, 2019
以下で購入させていただきました。
本体価格 $19.95 + 送料 $13.58 = $33.53 の¥3,676
配送は追跡なしの1番安いやつで
8/26 注文
8/28 オレゴン州から発送
9/7 札幌 着
でございました。
現在(2019年11月)では以下でも購入できます。
目次
Arduino環境
Arduino IDEでコーディング可能です。設定方法はTeensy 3.2などと全く一緒です。
TeensyduinoというソフトをインストールするだけでArduino IDEでTeensyを楽しめます。Version 1.47をインストールしました。
https://www.pjrc.com/teensy/td_download.html
バーサライタで性能を味見
早速 Teensy 4.0 でバーサライタを作ってみました。
構成
ワイヤレスチャージモジュールで回転部へ給電し、回転位置はフォトリフレクタでマーカを検知して導出します。
部品
- マイコン Teensy 4.0
https://www.pjrc.com/store/teensy40.html
- フォトリフレクタ QTR-1A
- 狭LEDバー 128セルを半分に切って使用
- ワイヤレスチャージモジュール
- マブチモーター RS-540SH
- シュミットトリガインバータ TC7W14FU
割り込み制御
フォトリフレクタ QTR-1Aで回転を検出(1周の時間計測)しており、フォトリフレクタの出力を受けて割り込み制御するのですがattachInterrupt()がチャタリングでうまく機能しなかったので間にシュミットトリガを挿入しました。
抵抗10kohmとコンデンサ0.1uFでチャタの急峻電圧変動をフィルタしてシュミットトリガのヒステリシス判定でチャタリングを完全除去して正常な割り込み動作を実現しました。
Teensy 4.0 attachedInterrupt()
チャタ半端ないのでシュミットトリガ必須 pic.twitter.com/svVCeKuT6r— HomeMadeGarbage (@H0meMadeGarbage) September 7, 2019
Arduino IDEコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#include <SPI.h> #include "Adafruit_DotStar_GB.h" #include "graphics.h" #define Fclk 80000000 #define itrPin 18 int numRot = 0; int numDiv = 0; int stateDiv = 0; unsigned long rotTime, timeOld, timeNow; Adafruit_DotStar strip = Adafruit_DotStar(NUMPIXELS, DOTSTAR_BGR); void setup() { Serial.begin(115200); strip.begin(); SPI.beginTransaction(SPISettings(Fclk, MSBFIRST, SPI_MODE0)); delay(1000); strip.clear(); strip.show(); attachInterrupt(itrPin, RotCount, RISING ); } void loop() { if(stateDiv == 1 && micros() - timeOld > rotTime / Div * (numDiv)){ stateDiv = 0; } if(stateDiv == 0 && micros() - timeOld < rotTime / Div * (numDiv + 1)){ stateDiv = 1; strip.clear(); for(int i = 0; i < NUMPIXELS; i++){ strip.setPixelColor(NUMPIXELS - 1 - i, pic[numRot][numDiv][i]); } strip.show(); numDiv++; if(numDiv >= Div ) numDiv = 0; } } void RotCount() { timeNow = micros(); rotTime = timeNow - timeOld; timeOld = timeNow; numRot++; if(numRot >= Frame ) numRot = 0; //Serial.println("int"); } |
SPI入力LED用のライブラリを改造してグローバル輝度を31から1に修正しています。
https://github.com/adafruit/Adafruit_DotStar
表紙画像データgraphics.hはpythonで生成しています。
動作
さすがの高速Teensy。LED64セルでも1周200分割での表示ができました!
Teensy 4.0 LED64個 1周 200分割#バーサライタ #teensy #オランダ pic.twitter.com/LTqQOMenzb
— HomeMadeGarbage (@H0meMadeGarbage) September 8, 2019
課題
Teensy 4.0はSPI出力が3つございます(SPI, SPI1, SPI2)。しかし現象SPI1やSPI2でLEDを点灯できていません。
いろいろライブラリ修正しながらトライしているのですが。。。
SPI1.begin();
SPI1.transfer(0b10101010);
SPI1.endTransaction();
などで信号出力は確認できているのですがDotstarライブラリに落とし込むと全く信号が出なくなるので勉強が必要です。
引き続きPOVります!
まだ2個目のSPIの使い方がわからず。フォーラムに泣きつき中
Teensy 4.0 LED64でGIF表示。#バーサライタ #クイックオバケ
☟表示したGIFはこちら
https://t.co/wUwN2n1kZb pic.twitter.com/MUliv0e43Q— HomeMadeGarbage (@H0meMadeGarbage) September 12, 2019