このブログを検索

ラベル arduino uno の投稿を表示しています。 すべての投稿を表示
ラベル arduino uno の投稿を表示しています。 すべての投稿を表示

2024/10/26

7セグLEDをArduino UNOで使う

7セグLEDを使ってみたいとずっと思っていて、何個か買ってもあるのだがめんどくさくて使わずにいた。

OSL10564-74HC595-R と書いてあるモジュールがあった。

いつどこで買ったか覚えていないのだが、どうやら秋月電子で売っているこれのようだ。

7セグメントLEDシリアルドライバーキット(DIP化キット LED別売): キット一般 秋月電子通商-電子部品・ネット通販


とりあえずArduino Unoで動かしてみた。

秋月電子にサンプルスケッチがあるのだが、なぜかIDEで開けない。

仕方がないのでテキストエディタで開いてスケッチにコピーして動かした。


PDFなど見てもどう配線すべきかがよくわからない。SPI接続とGPIO接続がある、とかいう情報も出てくるがなんのこっちゃ。

スケッチのソースを見るとこうなっていたので、

//SCK D13
//LATCH D10
//SDI D11



このようにつないだ。電源は5Vが必要らしい。


スケッチを貼っておく。

--------------

//ARDUINO UNO
//AE-7SEG-BOARD * 2
//SCK D13
//LATCH D10
//SDI D11
#include<SPI.h>
int sck = 13;
int latch = 10;
int sdi = 11;
int scroll_speed = 200;
const byte digits[] = {
  0b11111100, // 0
  0b01100000, // 1
  0b11011010, // 2
  0b11110010, // 3
  0b01100110, // 4
  0b10110110, // 5
  0b10111110, // 6
  0b11100000, // 7
  0b11111110, // 8
  0b11110110, // 9
};

void setup() {
  pinMode(latch, OUTPUT);
  pinMode(sck, OUTPUT);
  pinMode(sdi, OUTPUT);
  SPI.begin();
  SPI.setBitOrder(LSBFIRST);
  SPI.setDataMode(0);
}

void loop() {
  for (int j = 0; j < 10; j ++) {//10の桁
    for (int i = 0; i < 10; i ++) {//1の桁
      //SPI
      digitalWrite(latch, 0);
      SPI.transfer (digits[j]+1);//10の桁 +1でドット表示
      SPI.transfer (digits[i]);//1の桁
      digitalWrite(latch, 1);
      //
      delay(scroll_speed);
    }
  }
}

--------------------------





「びんぼうでいいの」でも動いた。




2020/06/27

Genuino UNO

去年だったかな、千石電商の店頭で500円で売っていたので買ったもの。

調べるとarduino互換機というか、arduinoの商品名が違うだけのもの、みたいなことらしい。

なんで500円なんだろう。

びんぼうでいいのより安い。


LEDを光らせたりブザーを鳴らしたりしてみたがたしかにarduinoと同じだ。

載っているマイコンが違う。


ATMEGA328P-PU と書いてあるのは同じだが、
arduinoは、1602、genuinoは 1532である。

ちなみにびんぼうでいいのは MEGA328P AU 1633

違いは、軽く検索したけどよくわからない。


2019/12/22

aitendo 基板付きI2CキャラクタLCDモジュール(16x2) [ATD1602CPB]

http://www.aitendo.com/product/17479

組み立て。
部品は少ないが少し迷う。

WEBの写真を見て、バックライトの配線を確認。

バックライトは片面に両面テープがついていたのかもしれない。
そのままつけたのでズレる。

チップコンデンサという小さな部品のはんだ付けをする。

基板の片側に仮はんだ付けをし、そこにチップコンデンサをおいて
片側をはんだ付けした後、反対側をはんだ付けする。

ピンヘッダは付属していないので持っていたものを付ける。

バックライトを使う場合はRLEDをはんだでショットすると書いてあるのでその通りにする

つまり、RLEDと書いてある部分をはんだでつなげる。

配線は書いてある通りに

VDD → 3.3V
SDA → A4
SCL → A5
RST → RESET
VSS → GND
LEDA → 3.3V

「びんぼうでいいの+LCD_ST7032.hライブラリで動作を確認しております。」
と書いてある。

びんぼうでいいの=arduinoに置き換えてよい。

arduinoのIDEを開く。

スケッチ → ライブラリをインクルード → ライブラリを管理...

ライブラリマネージャの検索フィルタに「LCD_ST7032」と入力すると、
LCD_ST7032ライブラリが表示されるので「インストール」をクリック。

ファイル → スケッチ例 の最後の方に「LCD_ST7032」が追加されているので、
その下の「HelloWorld」を選択して実行。

とりあえず動いた。

ときどき文字が左右にあるいは上下に反転する....
どこかはんだ不良があるかな...と半田を直したら、
最初から反転してしまうようになった。

指で触れたりすると正常に戻る。

なんなのこれは。









秋月電子 I2C接続キャラクタLCDモジュール 16x2行 白色バックライト付 ACM1602N1-FLW-FBW

参考
http://skomo.o.oo7.jp/f47/hp47_54.htm

ピンヘッダをはんだ付け

各ピンの機能

1(VSS)Ground
2(VDD)3.3V
3(Vo)LCD contrast adjust
4(SCL)SERIAL CLOCK INPUT
5(SDA)SERIAL DATA INPUT
6(BL+)Power supply for BL+
7(BL-)Power supply for BL-

arduino unoとの接続(ブレッドボード)

1 - Ground
2 - 3.3V
3 - 半固定抵抗の真ん中
4 - A4
5 - A5
6 - 3.3V
7 - Ground

半固定抵抗の両端をGround, 3.3Vへ

スケッチ

上記リンクのものをそのまま使って表示できた。
以下に転載

#include <Wire.h>
const char table[]={"From fairest creatures we desire "};

void setup() 
{
  Wire.begin();       // I2C初期化
  LCD_begin();

  byte i;
  writeCmd(0x80);//ディスプレイON、CURSOR-OFF、blinking-OFF
  delay(5);
  for(i=0;i<16;i++)
  {
    writeData(table[i]);
    delay();
  }
  writeCmd(0xC0);//2行目の先頭に移動
  delay(5);
  for(i=16;i<32;i++)
  {
    writeData(table[i]);
    delay(5);
  }
}

void loop() {}

void LCD_begin(void)
{
  // LCD初期化
  delay(15);
  writeCmd(0x01);//クリア ディスプレイ
  delay(5);
  writeCmd(0x38);//8ビットモード、2ライン、5x8ドット
  delay(5);
  writeCmd(0x0f);//ディスプレイON、CURSOR-ON、blinking-ON
  delay(5);
  writeCmd(0x06);//CURSOR移動、スクロールOFF
  delay(5);
}

void writeCmd(uint8_t cmd) 
{
  uint8_t rs_flg;
  Wire.beginTransmission(0x50);
  rs_flg = 0x00;
  Wire.write(rs_flg);
  Wire.write(cmd);
  Wire.endTransmission();
}

void writeData(uint8_t dat) 
{
  Wire.beginTransmission(0x50);
  Wire.write(0x80);
  Wire.write(dat);
  Wire.endTransmission();
}




2019/12/18

LEDをだんだん明るく・暗くする arduino uno

analogWriteという関数は、pinのON/OFF(HIGH/LOW)という2つの値ではなく、 0から255までの値を設定できる。 それを使ってLEDをだんだん明るくそしてだんだん暗くすることができる。

int a = 0;

void setup()
{
  pinMode(9, OUTPUT);
}

void loop()
{
  for (a=0; a<255; a++) {
    analogWrite(9, a); 
    delay(10);
  }

 for (a=255; a>0; a--) {
    analogWrite(9, a); 
    delay(10);
  }
}