2020年9月12日土曜日

arduino 聴音場センサーで距離を測る

前に一度やっていたのですが、
・正確だったかどうか忘れてしまっていた。
・形がいかにも目立つので、これを使えることがうれしい。
ネットで調べてみると、同じようなサイトがあった。
これらのことからもう一度、接続してみました。


温度に左右されることがあるそうですが、結構正確でした。

VISUAL STUDIO コンソール(console)を使いたい 最大公約数

C#を元にして最大公約数を見つけようとしました。
しかし、これまで使ってきたwindows form アプリケーションというツールを使うのではないらしい。
ネットで見ると、C言語の特徴である、
static void main()という関数が最初にあるのです。
で、このmain関数も使いたいと思って探していたところ、やっとわかりました。
これを使うのでした。(コンソールアプリ Net.Framework)
早速、使ってみました。

思い通りに動いてくれると、とてもうれしい。
-------------------------------------
   int a = 0, b = 0, r = 0;
            Console.Write("大きい方の整数を入力してください:");
            a = int.Parse(Console.ReadLine());
            Console.Write("小さい方の整数を入力してください:");
            b = int.Parse(Console.ReadLine());
            Console.WriteLine(" a b r");
            while (true)
            {
                r = a % b;
                Console.WriteLine("{0, 5}{1, 10}{2, 15}", a, b, r);
                a = b;
                b = r;
                if (r == 0)
                    break;
            }
            Console.WriteLine("GCD = {0}", a);
--------------------------------------
なかなか覚えられません。


2020年9月11日金曜日

なかよし



arduino processing 青や橙の円を表示する

可変抵抗器で位置、スイッチで色を決めます。
----------------------------------
import processing.serial.*;
import cc.arduino.*;

Arduino arduino;

int buttonPin = 13;
int vr0Pin = 0;
int vr1Pin = 1;

void setup(){
  size(500,500);
  noStroke();
  background( 255);
 
  println( Arduino.list() );
  arduino = new Arduino(this,Arduino.list()[1],57600);
 
  arduino.pinMode( buttonPin,Arduino.INPUT);
}

void draw(){
  int buttonState = arduino.digitalRead(buttonPin);
  float x = arduino.analogRead(vr0Pin);
  float y = arduino.analogRead(vr1Pin);
 
  if (buttonState == 0){
    fill(255,127,0);
  }
  else{
    fill(0,127,255);
  }
 
  x = map(x,0,1023,0,500);
  y = map(y,0,1023,0,500);
 
  ellipse(x,y,50,50);
}
------------------------------------
黒い方の可変抵抗器がブレッドボートに刺さりにくく、また真ん中の白いところを回しにくく途中であきらめました。
でも、きちんとできています。


arduono processing 色を読み取る

試行錯誤して、前の記事にあげたプログラムで、以下の部分を書き換えてみて、だいたい同じになりました。
image.JPGのファイルも変えて試しました。
つなぎ方は前と同じ。
-------------------------------------
  float rd = dist(0,0,255,r,g,b);
  float gd = dist(255,255,0,r,g,b);
  float bd = dist(255,0,0,r,g,b);
  float yd = dist(0,255,255,r,g,b); 
  float [] list = {rd,gd,bd,yd};
  float smallest = min(list);
-------------------------------------

2020年9月10日木曜日

思い切り走るゆき





aruduino processingで色を読み取る

マウスの位置の色を読み取ります。
------------------------------------
import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
PImage myImage;




void setup(){
 size(640,480);

 println(Arduino.list());
 arduino = new Arduino(this,Arduino.list()[1],57600);

 myImage = loadImage("image.JPG");

}

void draw(){
 image(myImage,0,0,width,height);

 color pixelColor = get(mouseX,mouseY);
 float r = red(pixelColor);
 float g = green(pixelColor);
  float b = blue(pixelColor);
 
  float rd = dist(255,0,0,r,g,b);
  float gd = dist(0,255,0,r,g,b);
  float bd = dist(0,0,255,r,g,b);
  float yd = dist(255,255,0,r,g,b);
 
  float [] list = {rd,gd,bd,yd};
  float smallest = min(list);
 
  arduino.digitalWrite(2,Arduino.LOW);
  arduino.digitalWrite(3,Arduino.LOW);
  arduino.digitalWrite(4,Arduino.LOW);
  arduino.digitalWrite(5,Arduino.LOW);
 
  if(smallest == rd )arduino.digitalWrite(2,Arduino.HIGH);
  if(smallest == yd )arduino.digitalWrite(3,Arduino.HIGH);
  if(smallest == gd )arduino.digitalWrite(4,Arduino.HIGH);
  if(smallest == bd )arduino.digitalWrite(5,Arduino.HIGH);
}
--------------------------------------
arduinoの画像の名前が「image.JPG」です。
LEDが点灯する色と、実際の色が違っていました。
何が間違っているのでしょうか。