読者です 読者をやめる 読者になる 読者になる

Ojin(オージン)

プログラミングに関して、メモなどを取っています。

Arduino 光センサーを使用したLチカ

const int sensorPin = A0;
const int ledPin = 13;
const int threshold = 700;

void setup(){
  pinMode(ledPin,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  int sensorValue = analogRead(sensorPin);
  Serial.print("sensor = ");
  Serial.println(sensorValue);
  
  if (sensorValue < threshold){
    digitalWrite(ledPin, HIGH);
  }
  else{
    digitalWrite(ledPin,LOW);
  }
}

光センサーの取得する値が700以下の時(暗いとき)にLEDが光るようになっている
f:id:nisikisi:20170429093001p:plain

光センサーの値は何が基準で変わっているのかはわからないが、書き込みの更新をするだけで値が変わっているのが不思議に感じる...

https://lh3.googleusercontent.com/-Fl-XNw83e6R18ArCdCNB6Tir429ef-TgujJ11Z1ZZoKbkEdVMB-MaLuFbTskzDGfDjf-2psZ-Dx5z99EV7o_S3ac0UJAkgMUxqPHPmuavGhByIcmK3ilcSHkYUWHsVeFUSdesxrdwjFMSgVqCkCLoXt0JHsmuHDU53fhskPA0wqTO_OfxeFrrvq_KZJKyQ1tdHns2xS-9mMl1KPkBCv9UNdJ4EjU4W13QTOoYRen4vbztTvkcQg79Y39-BLtQs_imoALjbzNOZ9AYyDa1r-IwNguJyiFDs-8tWSJ_E5xi6O-TiCxhrmkjLWyzbGjRO_Nlifsbqu7Qo3y3lOhGqGHx-lm_HVPhJ-l5Cdpi-qmCksfvBVEHv1HL849wMCjUjJ_3n0ukyUX8TcvTaxNxARpFxpu7iJPaBL3WE4ocdMXTNwOFqhZVb5rrDqEnnayZpu2QavYwozbWXVdeP7tQjZ-JkrQZUPpzQsGdWWExyiuhD6nRD_zrRb4BCNGu3l49FPvTL7vqpgEujHJvQx4523X9MxY086q-zq2YW5oBN1hOX7-QkQ5CJt1gJrjRCcLeWXXX8qDqDv9UqAiEP_0gs37bwggP4NbNSs-lx6DbRqJ8mvQyp8oQkl=w1723-h969-no

Pygame 主人公の移動+アニメーション

続きを読む

やっと固まった!(2017/04/27)

やっと固まった!

春休みに入ってから機械学習と人口知能をしたいという理由でpythonを学び始めたものの何か影響の受けやすい僕はいろんなことに振り回されていたが、やっと自分のしたいことが分かった。自己中は自己中なりに1人なんでもできるようにならなだめですねw

電子工作を再開?

もともと電子工作をしたくてPCやらarduinoやらを買ったりしてたのだが、家の環境からしても火元を扱えないし、金が当然のように消えていったので少し疎遠になっていた。が、それこそ間違いだったと気づいたので再開しようと思う

久々にやる気というか、心が躍ってるように感じる。本当にやりたかったのはこれだと思った。
あとは金の面で勝負かな?w

たのしバイナリの歩き方 wWinNameを生成する

勉強途中なのでエントリポイントがなんちゃらとかいうのは言えないのですが、今日はただただ発見したので備忘録として書いておきます*1
たのしいバイナリの歩き方 - 愛甲健二 - Google ブックス
↑参考:26ページです
www.amazon.co.jp


wWinNameが見つからない!?

環境:IDA Pro Free ver6.9

楽しいバイナリの歩き方を読んでいて、
「Names WindowにwWinMainがあるぞー」
と書かれているのですが、初期状態では見つからなかった。web上にも私と同じ人たちが大勢いたので書いていこうと思います
f:id:nisikisi:20170416081643p:plain
たぶんここで「えっ!?ねぇじゃん」となると思います。
本をよく見ると、Names window 内でwWinNameの横にアドレスが書かれています。
アドレスは"0040100"だそうです。

wWinMainの追加方法

初期状態(起動後)はこうなっていると思います。

f:id:nisikisi:20170416082811p:plain
ここでf:id:nisikisi:20170416082811p:plainf:id:nisikisi:20170416082811p:plain

起動後はたぶん黄色い部分がstartになっているはずです。
(ダブルクリックすると黄色になります)
では追加していきましょう。
f:id:nisikisi:20170416083629p:plain
まずNames Window内にadressという欄があるのでそこを左クリック。
そしてadd name...をクリック
すると次のような画面になります。
あとはアドレスと名前を打つだけです。
名前は何でも構いません。(標準ではwWinMain)
f:id:nisikisi:20170416084007p:plain
お疲れさまでした。

*1:今回は楽しいバイナリの歩き方を読んでいてわからない皆さんのために!なので本中にあるサンプルコードを実行していきたいと思います

健康に気を付けたい!

4月に入ってから肩こりがひどいを思っていたが、ひどいなんてもんじゃなくなってしまった!
肩が痛い!
頭が痛い!
肘が痛い!(まったく関係ないw)

ネットで症状のレベルを審査

f:id:nisikisi:20170407214053p:plain
結果は...
重症!

ちょっとこれはまずいんじゃないのか...
ノートPCだから猫背気味になっているとおもっていたが...
肩こりで頭が痛いというのはまぁまぁ重症みたいで...
今キーボードをたたいるのですが、非常に痛い!
これを描き終えたら早く寝ようを思う。

健康に気を使っていかなければならないという実感がやっとわいてきた。
運動も少ししないといけない...

Python リスト内の値を入れ替えたい!

これはいたってシンプルで、

>>>A = [0,1,2]
>>>A[0],A[1] = A[1],A[0]
>>>A
[1,0,2]

とするとできます。

Ptyhon ソート(昇順、降順、応用など)

ここでは、ソートの基本と昇順と降順の使い方を軽く触れたいと思います。

ソート(sort)とは何か

ソートは和訳すると「種類、区別」という意味になるのですが、pythonにおいてはリストや辞書などを昇順や降順に変えたいときに使います。

ソートの基本

単純にソートの種類を分けると、
まず1つ目はリストをインプレースに変更する組み込みメソッドであるlist.sort()です。
2つ目は組み込み関数であるsorted()です。よく使うのはこっちのほうです。

また、普通にソートしただけの場合は必ず昇順になります。
では見ていきましょう。
まず結果は全く同じなのですが、過程そしてその後が違うのが分かると思います。

#sort()
>>> list = [1,33,26,8]
>>> list
[1, 33, 26, 8]

>>> list.sort()
>>> list
[1, 8, 26, 33]

#注目
>>> list
[1, 8, 26, 33]

>>>list = (1,33,26,8)
>>> list.sort()

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    list.sort()
AttributeError: 'tuple' object has no attribute 'sort'

line.sort()を使った後にlistをもう一度表示させるとソートしたリストが返されます。なので、元のリストを何度も使いたいと思うときは不便なのでsorted()を使うことを勧めます。
list.sort()メソッドはリストのみ定義されているので、リスト以外はソートできないのでご注意を
一方でsorted()は任意のイテラブルを受け付けます。

#sorted()
>>> list = [1,33,26,8]
>>> list
[1, 33, 26, 8]

>>> sorted(list)
[1, 8, 26, 33]

>>>sorted([1, 33, 26, 8])
[1, 8, 26, 33]

#注目!
>>> list
[1, 33, 26, 8]

>>>list = (1,33,26,8)
>>>sorted(list)
[1, 8, 26, 33]
>>> list
(1, 33, 26, 8)

sorted()を実行するとその場リストが返されます。また、事前にリストを用意していなくても引数としてリストを入れてやることでソートができます。
更にリストが元の形に戻るので前者よりも効率よく使えそうな気がします。

昇順、降順

昇順は先ほどから何度も使っているので求め方は分かると思います。
単純な方法としては昇順に置き換えた後にreverse()を使って、リスト内の順番を逆にするというものです。

#sort()
>>> list = [1,33,26,8]
>>> list.sort()
>>> list
[1, 8, 26, 33]
>>> list.reverse()
>>> list
[33, 26, 8, 1]
#sorted()
>>> list = [1,33,26,8]
>>> n = sorted(list)
>>> n
[1, 8, 26, 33]
>>> n.reverse()
>>> n
[33, 26, 8, 1]

sorted()ではリストが記憶されないまま元の形に戻ってしまうので、新しい変数を作り、それをリバースすることで降順に置き換えられます。

実はこれもっと簡単に書けます。

#line.sort()
>>> list = [1,33,26,8]
>>> list.sort(reverse=True)
>>> list
[33, 26, 8, 1]
>>> list.sort(reverse = False)
>>> list
[1, 8, 26, 33]

#sorted()
>>> list = [1,33,26,8]
>>> sorted(list,reverse = True)
[33, 26, 8, 1]
>>> sorted(list,reverse = False)
[1, 8, 26, 33]

reverese=Trueにするとリバースはしないということになるので、昇順となる。
qiita.com

ソート HOW TO — Python 3.6.1 ドキュメント

多重キーのソート

非常にわかりやすかったので載せておきす。
d.hatena.ne.jp