2020年8月31日月曜日
VISUAL STUDIO ここまで成功
下部の画面に大きく字を描きます。
---------------------------------
private void FormBallGame_Load(object sender, EventArgs e)
{
DrawCircleSelectPictureBox();
DrawmainPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
}
private void DrawmainPictureBox()
{
Bitmap canvas = new Bitmap(mainPictureBox.Width,
mainPictureBox.Height);
using(Graphics g = Graphics.FromImage(canvas))
{
g.DrawString("萩",
new Font("HG教科書体",
mainPictureBox.Height - mainPictureBox.Height / 4 ),
Brushes.Gray,0,0,new StringFormat());
mainPictureBox.Image = canvas;
}
}
-------------------------------------
文字のフォントをメイリオにするとはみ出ました。ちなみに、
mainPictureBox.Height - mainPictureBox.Height / 4 ←を3にするとうまく表示されます。
---------------------------------
private void FormBallGame_Load(object sender, EventArgs e)
{
DrawCircleSelectPictureBox();
DrawmainPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
}
private void DrawmainPictureBox()
{
Bitmap canvas = new Bitmap(mainPictureBox.Width,
mainPictureBox.Height);
using(Graphics g = Graphics.FromImage(canvas))
{
g.DrawString("萩",
new Font("HG教科書体",
mainPictureBox.Height - mainPictureBox.Height / 4 ),
Brushes.Gray,0,0,new StringFormat());
mainPictureBox.Image = canvas;
}
}
-------------------------------------
文字のフォントをメイリオにするとはみ出ました。ちなみに、
mainPictureBox.Height - mainPictureBox.Height / 4 ←を3にするとうまく表示されます。
VISUAO STUDIO 再挑戦
画面作成は、前と同様簡単にできました。
さて、描画です。ここからつまづいたのです。
本のとおり、プログラムを打ち込みましたが、using ・・・はこのバージョンでは仕え居ないと表示されます。受けつけてくれないのです。仕方なくこれをはずし、
無理矢理のプログラム(おそらくGraphicsが開放されない)でやってみると、
{
DrawCircleSelectPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
Graphics g = Graphics.FromImage(selectCanvas);
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
-----------------------------------
気まぐれに、usingの後に(を付けてみると、
正しいプログラム
------------------------------------
private void FormBallGame_Load(object sender, EventArgs e)
{
DrawCircleSelectPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
}
------------------------------------
できました!
本には、「(」がなかったのです。
さて、描画です。ここからつまづいたのです。
本のとおり、プログラムを打ち込みましたが、using ・・・はこのバージョンでは仕え居ないと表示されます。受けつけてくれないのです。仕方なくこれをはずし、
無理矢理のプログラム(おそらくGraphicsが開放されない)でやってみると、
できました。
なおも、本のプログラムを見ていると、using・・・の最後に)が2つあるのです。
---------------------------------
private void FormBallGame_Load(object sender, EventArgs e){
DrawCircleSelectPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
Graphics g = Graphics.FromImage(selectCanvas);
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
-----------------------------------
気まぐれに、usingの後に(を付けてみると、
正しいプログラム
------------------------------------
private void FormBallGame_Load(object sender, EventArgs e)
{
DrawCircleSelectPictureBox();
}
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height;
int width = selectPictureBox.Width;
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
g.FillEllipse(Brushes.LightBlue, 0, 0, height, height);
selectPictureBox.Image = selectCanvas;
}
}
------------------------------------
できました!
本には、「(」がなかったのです。
2020年8月30日日曜日
人感センサーと圧電(たぶん)スピーカー
音程の出るスピーカーを圧電スピーカーと思っていて、なかなか音が出ませんでした。
また、人感センサーの接続が間違っていないか自信を持つのに数時間。
どうもスピーカーがだめなのだと気づくまでに数時間。
スピーカーを取り替え、接続も間違っていたのを直し、
やっと音が出るようになりました。
前回、人感センサーを使ったときは、シリアルモニターに数字が(1)表示されるようになっていましたが、今回は音が出るので人に反応しているのを実感できました。
やっとできて、しばらくピーピー鳴らせています。
------------------------------------------------------------------------------
const int sensorPin = 2;
const int buzzerPin = 8;
void setup(){
pinMode( buzzerPin ,OUTPUT);
pinMode( sensorPin,INPUT);
}
void loop(){
boolean sensorState = digitalRead(sensorPin);
digitalWrite( buzzerPin ,sensorState);
delay(10);
}
----------------------------------
また、人感センサーの接続が間違っていないか自信を持つのに数時間。
どうもスピーカーがだめなのだと気づくまでに数時間。
スピーカーを取り替え、接続も間違っていたのを直し、
やっと音が出るようになりました。
前回、人感センサーを使ったときは、シリアルモニターに数字が(1)表示されるようになっていましたが、今回は音が出るので人に反応しているのを実感できました。
やっとできて、しばらくピーピー鳴らせています。
------------------------------------------------------------------------------
const int sensorPin = 2;
const int buzzerPin = 8;
void setup(){
pinMode( buzzerPin ,OUTPUT);
pinMode( sensorPin,INPUT);
}
void loop(){
boolean sensorState = digitalRead(sensorPin);
digitalWrite( buzzerPin ,sensorState);
delay(10);
}
----------------------------------
arduino ステッピングモーター Stepper motor 28BYJ-48 Parameters
中でモーターが動く音はしているのですが、軸が回りません。
どうも、モーターがダメなのかもしれません。
------------------------------------
const int dirPin = 12;
const int stepPin = 13;
void setup(){
digitalWrite(dirPin,OUTPUT);
pinMode(stepPin,OUTPUT);
}
void loop(){
digitalWrite(dirPin,HIGH);
for ( int i=0; i < 200 ; i++){
digitalWrite(stepPin,HIGH);
delay(1);
digitalWrite( stepPin,LOW);
delay(1);
}
delay(1000);
digitalWrite( dirPin,LOW);
for (int i = 0;i<200;i++){
digitalWrite( stepPin,HIGH);
delay(1);
digitalWrite( stepPin,LOW);
delay(1);
}
delay(1000);
}
-------------------------------
どうも、モーターがダメなのかもしれません。
------------------------------------
const int dirPin = 12;
const int stepPin = 13;
void setup(){
digitalWrite(dirPin,OUTPUT);
pinMode(stepPin,OUTPUT);
}
void loop(){
digitalWrite(dirPin,HIGH);
for ( int i=0; i < 200 ; i++){
digitalWrite(stepPin,HIGH);
delay(1);
digitalWrite( stepPin,LOW);
delay(1);
}
delay(1000);
digitalWrite( dirPin,LOW);
for (int i = 0;i<200;i++){
digitalWrite( stepPin,HIGH);
delay(1);
digitalWrite( stepPin,LOW);
delay(1);
}
delay(1000);
}
-------------------------------
2020年8月29日土曜日
arduino 回路図を描く
今自分が回路図を描く予定はありませんが、回路図を描くいいツールがどこかにないか探していました。
↓こちらは有料です。検索で出てくるのはこれが多く、無料で手に入れる方法がないか調べてみましたがダメでした。
https://fritzing.org/
そして、このサイト。
↓こちらは有料です。検索で出てくるのはこれが多く、無料で手に入れる方法がないか調べてみましたがダメでした。
https://fritzing.org/
そして、このサイト。
うまく描くことができます。ただ、ダウンロードすると、*BRDという拡張子のファイルになています。これを表示させるアプリは残念ながら持っていないのです。
画面上で画像コピーが早いかもしれません。
2020年8月28日金曜日
VISUAL STUDIO ついに助けを借りる 間違いボール探しゲーム
本に沿って進めていましたが、ダメ。
コードを書き込んでいくところで、理解できなくなりました。
https://www.shuwasystem.co.jp/book/9784798058986.html
サンプルファイルを手に入れることにしました。
https://www.shuwasystem.co.jp/support/7980html/5898.html
「間違いボール探し」までの解説が大変丁寧だったのですが、この部分から解説が中途半端というか、この先は自分で考えてということなのか、飛躍しています。
サンプルファイルを見ないことには理解できません。
この本で挫折するのは、おそらくこのあたりからだと思います。
まず、292ページの表5-30と290ページの表5-29が同じでした。292ページの表5-30はSplitContainerコントロールのプロパティの設定のはずなのです。292ページの表5-30の下に画面の図があり、これでなんとか理解できます。
PictureBOxに円を描くところでは、1つの円を描く例が示されています。しかし、本来のコードは、5つの円を描くことになっていて5つ描くプログラムは、
--------------------------------------
// 上のselectPictureBoxに円を描く
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height; // 高さ
int width = selectPictureBox.Width; // 幅
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
for (int i = 0; i < ballCount; i++)
{
g.FillEllipse(brushes[i], i * height, 0, height, height);
}
selectPictureBox.Image = selectCanvas;
}
}
----------------------------------
324ページです。
下の部分に画像を表示するプログラムは、
----------------------------------
// 下のPictureBoxに描画する
private void DrawMainPictureBox(Brush color, string text, bool trueFlag)
{
int height = mainPictureBox.Height; // 高さ
int width = mainPictureBox.Width; // 幅
//描画先とするImageオブジェクトを作成する
if (canvas == null)
{
canvas = new Bitmap(width, height);
}
using (Graphics g = Graphics.FromImage(canvas))
{
// 正解用の背景色にする
if (trueFlag)
{
g.FillRectangle(Brushes.LightPink, 0, 0, width, height);
}
else
{
g.FillRectangle(Brushes.White, 0, 0, width, height);
}
//背景に引数で指定した文字列を描画する
g.DrawString(text,
new Font(fontName, height - height / 4),
color, 0, 0, new StringFormat());
//MainPictureBoxに表示する
mainPictureBox.Image = canvas;
}
------------------------------------
325ページです。
つまり、305ページまでは解説です。まだ時間がかかります。
からない。しばらくながめてみます。
コードを書き込んでいくところで、理解できなくなりました。
https://www.shuwasystem.co.jp/book/9784798058986.html
サンプルファイルを手に入れることにしました。
https://www.shuwasystem.co.jp/support/7980html/5898.html
「間違いボール探し」までの解説が大変丁寧だったのですが、この部分から解説が中途半端というか、この先は自分で考えてということなのか、飛躍しています。
サンプルファイルを見ないことには理解できません。
この本で挫折するのは、おそらくこのあたりからだと思います。
まず、292ページの表5-30と290ページの表5-29が同じでした。292ページの表5-30はSplitContainerコントロールのプロパティの設定のはずなのです。292ページの表5-30の下に画面の図があり、これでなんとか理解できます。
PictureBOxに円を描くところでは、1つの円を描く例が示されています。しかし、本来のコードは、5つの円を描くことになっていて5つ描くプログラムは、
--------------------------------------
// 上のselectPictureBoxに円を描く
private void DrawCircleSelectPictureBox()
{
int height = selectPictureBox.Height; // 高さ
int width = selectPictureBox.Width; // 幅
Bitmap selectCanvas = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(selectCanvas))
{
for (int i = 0; i < ballCount; i++)
{
g.FillEllipse(brushes[i], i * height, 0, height, height);
}
selectPictureBox.Image = selectCanvas;
}
}
----------------------------------
324ページです。
下の部分に画像を表示するプログラムは、
----------------------------------
// 下のPictureBoxに描画する
private void DrawMainPictureBox(Brush color, string text, bool trueFlag)
{
int height = mainPictureBox.Height; // 高さ
int width = mainPictureBox.Width; // 幅
//描画先とするImageオブジェクトを作成する
if (canvas == null)
{
canvas = new Bitmap(width, height);
}
using (Graphics g = Graphics.FromImage(canvas))
{
// 正解用の背景色にする
if (trueFlag)
{
g.FillRectangle(Brushes.LightPink, 0, 0, width, height);
}
else
{
g.FillRectangle(Brushes.White, 0, 0, width, height);
}
//背景に引数で指定した文字列を描画する
g.DrawString(text,
new Font(fontName, height - height / 4),
color, 0, 0, new StringFormat());
//MainPictureBoxに表示する
mainPictureBox.Image = canvas;
}
------------------------------------
325ページです。
つまり、305ページまでは解説です。まだ時間がかかります。
からない。しばらくながめてみます。
arduino ソレノイドプッシュ型
-----------------------------------
int solenoid = 13;
int tempo = 100;
void setup(){
pinMode(solenoid,OUTPUT);
}
void loop(){
for (int k=0; k<3; k++){
for (int i=0;i<3;i++){
digitalWrite(solenoid,HIGH);
delay(tempo);
digitalWrite(solenoid,LOW);
delay(tempo);
}
delay(tempo*3);
}
digitalWrite(solenoid,HIGH);
delay(tempo);
digitalWrite(solenoid,LOW);
delay(tempo);
delay(tempo*9);
}
-------------------------------
2020年8月27日木曜日
arduino DCモーターを自由に動かす
電池の補助が必要でした。
----------------------------------
int IN1 = 5;
int IN2 = 6;
void setup(){
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
}
void loop(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(1000);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
delay(1000);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
delay(1000);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
delay(1000);
}
----------------------------------
arduino サーボモーター 可変抵抗器つき
------------------------------------
# include <Servo.h>
Servo myServo;
void setup(){
myServo.attach(9);
}
void loop(){
int sensorValue = analogRead(A0);
int angle = map(sensorValue,0,1023,0,90);
myServo.write(angle);
delay(500);
}
-----------------------------------
2020年8月26日水曜日
arduino サーボモーター
これも復習です。
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
myservo.write(0);
delay(1000);
myservo.write(90);
delay(1000);
myservo.write(-90);
delay(1000);
}
void loop() {
}
--------------------------------------
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
myservo.write(0);
delay(1000);
myservo.write(90);
delay(1000);
myservo.write(-90);
delay(1000);
}
void loop() {
}
--------------------------------------
arduino キャラクターを動かす
ディスプレイが表示されるようになったので、キャラクターが動くプログラムを入れてみました。スケッチ例のリキッドクリスタル→カスタムキャラクターを選ぶと人形が動くのが見られます。
手が上下します。
スケッチ例のリキッドクリスタル「LiquidCrystal」を見ていて、試しに「CustomCharacter」以外のものを試してみたところ、いろいろな表示を見ることができました。これは楽しい。
2020年8月25日火曜日
arduino 液晶ディスプレイ SD1602HULB-XA-G-G と LCD1602
手間取りました。
私の持っているディスプレイは、LCD1602。
本に紹介されているディスプレイは、SD1602HULB-XA-G-G。
ピンの数は同じなので、苦労はないと思っていたのですがこれが大間違い。
ピンの場所が対照的な感じで配置されているのです。本の通りにブレッドボートに指すことができません。
私の元のディスプレイ配線と比べてみました。そして、可変抵抗器のピンが3番とつながっていることがわかりました。ここを元にしてピンの場所を考えると、ピンの配置を左上に置いて3番ピンを見ると、1番ピンは左端だとわかりました。つまり本の配置の1番ピンは、私の持っているディスプレイの左端。
ここからワイヤを指し直し本のプログラムを流し入れてみましたが、変化がありません。でも、そのうち、暗~く数値が表示されているのが見えました。
ということは、ほとんど接続は合っている。
どうやれば、明るくなるのか。これでまた、いくつかのピンを指し直しました。
そしてついに見つけました。本の16番ピンは私のディスプレイではAのピン、15番ピンはkのピンだったのです。
また、本には文字列はシングルクォーテーション「'」でくくってあったのですが、ダブルクォーテーション「""」でした。
ディスプレイには、気温が表示されるとあるのですが、どうも計算式がおかしいようです。
LiquidCrystal lcd(12,11,5,4,3,2);
void setup(){
lcd.begin(16,2);
}
void loop(){
int sensorValue = analogRead(A0);
float temperature = sensorValue * (5.0 / 1023.0) * 100;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp" + String(temperature) + " C");
delay(1000);
}
------------------------------------
私の持っているディスプレイは、LCD1602。
本に紹介されているディスプレイは、SD1602HULB-XA-G-G。
ピンの数は同じなので、苦労はないと思っていたのですがこれが大間違い。
ピンの場所が対照的な感じで配置されているのです。本の通りにブレッドボートに指すことができません。
私の元のディスプレイ配線と比べてみました。そして、可変抵抗器のピンが3番とつながっていることがわかりました。ここを元にしてピンの場所を考えると、ピンの配置を左上に置いて3番ピンを見ると、1番ピンは左端だとわかりました。つまり本の配置の1番ピンは、私の持っているディスプレイの左端。
ここからワイヤを指し直し本のプログラムを流し入れてみましたが、変化がありません。でも、そのうち、暗~く数値が表示されているのが見えました。
ということは、ほとんど接続は合っている。
どうやれば、明るくなるのか。これでまた、いくつかのピンを指し直しました。
そしてついに見つけました。本の16番ピンは私のディスプレイではAのピン、15番ピンはkのピンだったのです。
また、本には文字列はシングルクォーテーション「'」でくくってあったのですが、ダブルクォーテーション「""」でした。
ディスプレイには、気温が表示されるとあるのですが、どうも計算式がおかしいようです。
------------------------------------
# include <LiquidCrystal.h>LiquidCrystal lcd(12,11,5,4,3,2);
void setup(){
lcd.begin(16,2);
}
void loop(){
int sensorValue = analogRead(A0);
float temperature = sensorValue * (5.0 / 1023.0) * 100;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp" + String(temperature) + " C");
delay(1000);
}
------------------------------------
2020年8月24日月曜日
arduino delay関数でLEDの明るさを調整する
短い時間のdelay関数を設定することで明るさの調整ができました。
---------------------------------
void setup(){
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,HIGH);
delay(1);
digitalWrite(13,LOW);
delay(3);
}
-------------------------------
delayの数値を変えて実行すると明るさが変わりました。
---------------------------------
void setup(){
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,HIGH);
delay(1);
digitalWrite(13,LOW);
delay(3);
}
-------------------------------
delayの数値を変えて実行すると明るさが変わりました。
登録:
投稿 (Atom)