.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _drag_number: 数字をドラッグ ================================================ 7セグメントディスプレイを制御するためのスライダーバーを描画しましょう。 .. image:: img/drag_servo.png **必要な部品** このプロジェクトには、以下の部品が必要です。 一式を購入するのが間違いなく便利です。リンクはこちらです: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - このキットのアイテム - リンク * - Raphael Kit - 337 - |link_Raphael_kit| 以下のリンクから個別に購入することもできます。 .. list-table:: :widths: 30 20 :header-rows: 1 * - コンポーネントの紹介 - 購入リンク * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_7_segment` - |link_7segment_buy| * - :ref:`cpn_74hc595` - |link_74hc595_buy| **配線図** .. image:: img/image125.png **スケッチ** .. code-block:: arduino import processing.io.*; int number = 0; int levelRange=9; Slider mySlider; int SDI=17; //serial data input int RCLK=18; //memory clock input(STCP) int SRCLK =27; //shift register clock input(SHCP) int[] SegCode= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void hc595_shift(int dat){ int i; for(i=0;i<8;i++){ int n=(0x80 & (dat << i)); if ( n==0){ GPIO.digitalWrite(SDI, 0); } else { GPIO.digitalWrite(SDI, 1); } GPIO.digitalWrite(SRCLK, 1); delay(1); GPIO.digitalWrite(SRCLK, 0); } GPIO.digitalWrite(RCLK, 1); delay(1); GPIO.digitalWrite(RCLK, 0); } void setup() { size(400, 200); frameRate(50); mySlider = new Slider(width * 0.2,height * 0.4,width * 0.8,height * 0.6,0,levelRange,number); GPIO.pinMode(SDI, GPIO.OUTPUT); GPIO.pinMode(RCLK, GPIO.OUTPUT); GPIO.pinMode(SRCLK, GPIO.OUTPUT); GPIO.digitalWrite(SDI, 0); GPIO.digitalWrite(RCLK, 0); GPIO.digitalWrite(SRCLK, 0); } void draw() { background(255); mySlider.show(); hc595_shift(SegCode[number]); } void mouseDragged(){ number = mySlider.dragPoint(mouseX,mouseY); } class Slider{ float slotPointAX; float slotPointBX; float slotPointAY; float slotPointBY; float linePoint; float depth; int maxRange; int minRange; int value; Slider(float ax, float ay, float bx, float by, int min, int max, int v){ slotPointAX = ax; slotPointAY = ay; slotPointBX = bx; slotPointBY = by; maxRange = max; minRange = min; value = v; linePoint = slotPointAX;// + map(value, minRange, maxRange, slotPointAX, slotPointBX); depth = (slotPointBY - slotPointAY)*0.75; } void show(){ rectMode(CORNERS); fill(200); stroke(255,0,0); rect(slotPointAX, slotPointAY, slotPointBX, slotPointBY); fill(255,0,0); rect(slotPointAX, slotPointAY, linePoint, slotPointBY); fill(200); textSize(depth); text(minRange, slotPointAX, slotPointBY+depth); text(maxRange, slotPointBX, slotPointBY+depth); text(value, linePoint, slotPointAY); } int dragPoint(float mx, float my){ if(mx>=slotPointAX && mx<=slotPointBX && my>=slotPointAY && my<=slotPointBY){ value = int(map(mx,slotPointAX,slotPointBX,minRange,maxRange)); linePoint = map(value,minRange,maxRange,slotPointAX,slotPointBX); } return value; } } **どのように動作するのか?** このプロジェクトは、以前のプロジェクトのスライダーと 7 セグメント ディスプレイを統合します。 具体的な知識については、 :ref:`show_number` と :ref:`metronome` を参照してください。