Index

プログラミング

Aizu judge

 0000

 0001

Project Eular

C#

マウスとキーボード

電子工作

Arduino用のブートローダを焼く(8MHz 16MHz)

Eagle

Raspberry Pi

パソコンを操作できるリモコンを作る (赤外線)

パソコンを操作できるリモコンを作る (Bluetooth)

電気電子回路

Circuit Lab WEB上で回路シミュレーション

CRフィルタ

オペアンプの実験

トランジスタの実験

Raspberry Pi

f:id:ddpp:20130809200610p:plain:w120
Raspberry Pi

初期設定

Raspbianをダウンロード
Win32DiskImagerをダウンロード
・Win32DiskImagerを用いてRaspbianをSDカードにWrite
・キーボード
・時間
・初期ユーザ pi
・初期パスワード raspberry

バックアップ

・Win32DiskImagerを用いてSDカードをRead

固定IP

/etc/network/interface

iface eth0 inet static
address 192.168.0.81
netmask 255.255.255.0
gateway 192.168.0.1

/etc/resolv.conf

nameserver 192.168.0.1
nameserver 192.168.0.2

/etc/init.d/networking reload

プロキシの設定

プロキシ環境でapt-get

sudo http_proxy=http://sample.proxy.server.jp:8080 apt-get update

参考
http://randomjottings.blog.fc2.com/blog-entry-2.html

ピン配置

ピン配置

音声録音

arecord -D plughw:1,0 -f cd test.wav

Juliusを用いた音声認識

export ALSADEV="plughw:1,0"
julius -C fast.jconf -charconv EUC-JP UTF-8

KURO-RSとJuliusで家電をコントロールしてみた
Raspberry PiにJuliusを動かしてみた(再び)

Juliusを用いた音声認識 モジュールモード

Julius で音声認識させてみた

起動時に実行するスクリプト

/etc/rc.localに書く

Python

sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install rpi.gpio

Aizu Judge 0001 List of Top 3 Hills

問題

入力値を降順ソートすればよい.

入力例

1819
2003
876
2840
1723
1673
3776
2848
1592
922

出力例

3776
2848
2840

C

#include<stdlib.h>
#include<stdio.h>

int compare(const void* s,const void *t ){
  return (*((int*)t) - *((int*)s));
}

int main(){
  int height[10];
  int i=0;
  while(~scanf("%d",&height[i++]));
  qsort(height, 10, sizeof(height[0]), compare );
  for( i = 0; i < 3 ; i++ )
    printf("%d\n",height[i]);
  return 0;
}

C++

# include <iostream>
# include <algorithm>
using namespace std;
int main()
{
  int h[10];
  for(int i=0;i<10;i++)cin >> h[i];
  sort(h,h+10);
  reverse(h,h+10);
  for(int i=0;i<3;i++)cout << h[i] << endl;
  return 0;
}

C++

#include<iostream>
#include<algorithm>
int main(){
  int i=0,h[10];
  while(std::cin>>h[i++]);
  std::sort(h,h+10);
  for(i=9;i>6;)std::cout<<h[i--]<<"\n";
}

Java

import java.util.*;
class Aizu{
  public static void main(String[] args){
    int height[] = new int[10];
    Scanner scan = new Scanner(System.in);
    for(int i=0;i<10;i++){
      height[i] = scan.nextInt();
    }
    Arrays.sort(height);
    for(int i=9;i>9-3;i--){
      System.out.println(height[i]);
    }
  }
}

Python

height = [int(raw_input()) for i in range(10)]
for i in sorted(height,reverse=True)[:3]: print i

Ruby

height = []
10.times{height.push(gets.to_i)}
puts height.sort{|i,j| j<=>i}[0,3]

Ruby

puts ([0]*10).map{gets.to_i}.sort{|i,j| j<=>i}[0,3]

PHP

<?php
$height = array();
for($i=0;$i<10;$i++){
  array_push($height,(int)fgets(STDIN));
}
rsort($height);

for($i=0;$i<3;$i++){
  echo $height[$i]."\n";
}
?>

オペアンプを用いた演算増幅

問題

入力が2V以上なら5V, 入力が2V未満なら0Vを出力する回路を設計せよ

問題

入力が2V以上なら0V, 入力が2V未満なら5Vを出力する回路を設計せよ

回路

f:id:ddpp:20130730161150p:plain

結果

f:id:ddpp:20130730154338p:plain

問題

入力が3V以上なったらHIGHに変化,
入力が1V未満になったらLOWに変化する回路を設計せよ

f:id:ddpp:20130730185637p:plain
f:id:ddpp:20130730184645p:plain

問題 差動増幅回路

買ってきたセンサは 1Vから 3V まで電圧変化する.
マイコンの入力 (0V から 5V) でセンサの値を読み取るとき,
分解能を上げるための増幅回路を設計せよ.

入力の最大電圧 3 V から 差動電圧 3 V
入力の最小電圧 1 V から 増幅度 5V / (3V - 1V) = 2.5倍
f:id:ddpp:20130731024516p:plain
f:id:ddpp:20130731022657p:plain
0V と 5V付近で波形が少し歪んでしまっている.
再設計
f:id:ddpp:20130731023625p:plain
f:id:ddpp:20130731024802p:plain

問題 電流電圧変換

買ってきたフォトダイオードは受光感度変化で電流が0.1 nAから7.3μAまで変化する.
マイコンの入力(0V から 5V) でセンサ値を読み取れるようにせよ.

C# マウス移動とキーボード出力

マウス移動とキーボード出力

プロジェクト→参照の追加→System.Drawing
プロジェクト→参照の追加→System.Windows.Forms

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading; // Sleep
using System.Drawing; // Point
using System.Windows.Forms; // Sendkeys, Cursor

namespace SendKeySample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine( "3秒後にマウスを右下に移動します" );
            Thread.Sleep( 3000 );
            Cursor.Position = new Point( Cursor.Position.X + 200, Cursor.Position.Y + 200 );

            Console.WriteLine( "3秒後にキーボードHELLOWORLD!{ENTER}を入力します" );
            Thread.Sleep( 3000 );
            SendKeys.SendWait( "HELLOWORLD!" );
            SendKeys.SendWait( "{ENTER}" );
        }
    }
}

CR フィルタの実験

CRローパスフィルタ

C=0.1 uF と抵抗を使ってカットオフ周波数30 kHzのローパスフィルタを作りたい

このとき用いる抵抗の値は?

f:id:ddpp:20130729192120p:plain

未知数 R

実験

f:id:ddpp:20130729192941p:plain

周波数特性

30 kHzで-3dBになっている

f:id:ddpp:20130729193635p:plain

位相特性

f:id:ddpp:20130729194016p:plain

f=10kHzの入力

f:id:ddpp:20130729200140p:plain

f=30kHzの入力

f:id:ddpp:20130729195705p:plain

f=100kHzの入力

f:id:ddpp:20130729195924p:plain

参考