2014-05-01から1ヶ月間の記事一覧

ULを付ける理由

Arduino UNOでUSARTのテスト。 以下のコードで、FOSCを16000000、16ULを16にしてたら動かなかった。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1130998931基本的だけど、AVRのunsigned intは16bit、2バイトなので65535までしか表現できな…

ArduinoでMakefileを使う

http://tosainu.wktk.so/view/310環境変数を.zshrcに追加 export ARDUINO_DIR=/Applications/Arduino1.0.5.app/Contents/Resources/Java export ARDMK_DIR=~/Documents/arduino-mk export BOARDS_TXT=/Applications/Arduino1.0.5.app/Contents/Resources/Jav…

ArduinoからAVRへ:最大のメリット→割り込み

割り込みを使うとArduinoのloop()の呪縛から解法される。(省電力なシステムを設計できる) 以下ではExternal Interrupt INT0/INT1(PD2,PD3)を使った。 http://elec-studio.eco.coocan.jp/AVR_C-Program06.html http://stastaka.wordpress.com/2012/03/10/…

構造体とクラスへのポインタ

#include <iostream> #include <string> #define LEN(x) (sizeof(x)/sizeof(*x)) typedef struct { //無名構造体でtypedefすると便利 int a; char name[10]; } t_Student; //t_ のように頭にPrefixをつけとくとクラスと構造体を混同せずに済みそう t_Student st[] = { {1,"char</string></iostream>…

Arduinoのライブラリを作る その3(PWM)

pwm.h #ifndef _PWM_H #define _PWM_H class Pwm{ public: void PWM16_init(); void PWM16_write(int percentage); }; #endif pwm.cpp #include <avr/io.h> #include "pwm.h" void Pwm::PWM16_init(){ DDRB |= _BV(PORTB1);//For PWM output TCCR1A = _BV(COM1A1)|_BV(</avr/io.h>…

Arduinoのライブラリを作る その2(ADC)

adc.h #ifndef _ADC_H_ #define _ADC_H class Adc { public: void adc_init(); int adc_conv(int pin); }; #endif adc.cpp #include "adc.h" #include <avr/io.h> #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) void Adc::adc_init(){ </avr/io.h>…

Arduinoのライブラリを作る その1(USART)

usart.h #ifndef _USART_H #define _USART_H class Usart{ public: void USART_init(unsigned int ubrr); void USART_Transmit(unsigned char data); char USART_recv(void); void putString(char msg[]); int getUBRR(int baud); int getUBRR(int baud,unsi…

ArduinoでADCを使う

このコードではArefにVcc(5V)などをつなぐ必要がある。 #include <avr/io.h> #include <util/delay.h> #define F_OSC 16000000UL #define BAUD 9600 #define MYUBRR ((F_OSC/(BAUD*16UL))-1) #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) void usa</util/delay.h></avr/io.h>…

Arduino言語とC言語のコンパイルサイズを比べてみる

Arduinoコード void setup(){ pinMode(13,OUTPUT); } void loop(){ digitalWrite(13,HIGH); delay(1000); } 実行結果 ---------------- Device: atmega328p Program: 1062 bytes (3.2% Full) (.text + .data + .bootloader) Data: 9 bytes (0.4% Full) (.dat…

Arduno UNOでPWMを使う

PWMの設定 TCCR1A = _BV(COM1A1)|_BV(WGM11); //Compare match A enable,Fast PWM (ICR1 as TOP) TCCR1B = _BV(WGM13)|_BV(WGM12)|_BV(CS10); //Fast PWM (ICR1 as TOP),Clock Source enable 前書いたコードと同じだけど、再掲。 //#define F_CPU 1000000UL …

Pythonで3Dグラフの描画

http://docs.enthought.com/mayavi/mayavi/mlab.html#animating-the-data流体のところとか、何かに使えそう。 でもMavericksでVTKがインストールできないのでmayaviが試せない

MavricksにVTKをインストール

https://github.com/Homebrew/homebrew-science/issues/408 $ brew install https://raw.github.com/jenshnielsen/homebrew-science/vtk6mavericks/vtk.rbincdirがないといわれる。 ここが参考になりそうだけど、python-configが何のことかわからない。http:…

文字列を返り値にする

文字列リテラルを返却する場合は静的なので問題ないんだけど、 (Char型への)ポインタであるローカル変数を返却しようとするとエラーが出る。 関数が呼ばれた後に、ローカル変数が破棄されていることが原因らしい。 こういうときにmallocを使う。 http://ww…

任意の長さの配列を引数にとる

なぜか関数内部で配列の長さを計算出来ないので配列の長さを渡すことにしたけど もっとうまいやり方がないものか。 追記:配列引数のサイズをsizeofで計算してると思ったら、ポインタのサイズを計算していたhttps://www.jpcert.or.jp/sc-rules/c-arr01-c.htm…

fgetsの仕組みについてメモ

sizeof演算子とstrlen関数の使いどきを混同していた。 配列全体の長さ=sizeof その配列の内、文字列が入っている部分の長さ=strlen #include <stdio.h> #include <string.h> int main(void){ printf("INPUT SOMETHING \n"); char buffer[10]; fgets(buffer,10,stdin); printf("Y</string.h></stdio.h>…

gets, scanf, fgets, fscanf

getsが危険だからfgetsを使えってコンパイルが言うのでそうしてたけど、 scanfだとエラーが出なかった。 #include <stdio.h> int main(void){ printf("input something\n"); char buffer[10]; scanf("%s",buffer); printf("you input %s\n",buffer); return 0; } fsca</stdio.h>…

wxPythonで描画するクラス

やっと見つけた。 http://wiki.wxpython.org/VerySimpleDrawingwx.PaintDC(Device Context)とwx.Penを使う。 import wx app = wx.App() frame = wx.Frame(None, title="Draw on Panel") panel = wx.Panel(frame) def on_paint(event): dc = wx.PaintDC(event…

AppleScriptでウィンドウ位置をずらす

買って間もないRetinaディスプレイが壊れた。 左はじが少し見れない状況。AppleScriptとAutomatorでウィンドウ位置を取得して右に50オフセットするスクリプトを書いてショートカット⌘+\を割り当てた。でも、もしかしてMacのアプリケーションは前回の起動位…

Mavericksが起動しない→OSを再インストール(USBメモリ使用)

買ったばかりのMac Book Pro RetinaのMavericksが起動しなくなった。 Shiftを押して立ち上げるセーフモードで起動しないので、システムファイルが破損していることがわかった。Mavericksの再インストールはユーザーデータを残したまま可能だが、問題はここの…

AVRでPWMを使ってLEDを光らせる

使ったチップはATmega8515 動作周波数は内部発振で8MHz。 1MHzだと点滅してきれいに見えなかった。 //#define F_CPU 1000000UL #include <avr/io.h> //#include <util/delay.h> #include <stdio.h> void rs_putc (char c) { loop_until_bit_is_set(UCSRA, UDRE); UDR = c; } void rs_puts </stdio.h></util/delay.h></avr/io.h>…

UBRRHとUCSRCレジスタがメモリアドレスを共有している件

こんなコードを書いていたら動かなかった。 #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { //unsigned char data = 0; char data; //DDRD = 0b11111100; //portD : 0,1pin???? //PORTD = 0b00000000; UBRRH = 0x00; UBRRL = 0x19; //2400 @</util/delay.h></avr/io.h>…

配列とポインタは同じものではない

こんがらがってたのでメモ。このコードだとlvalue required as ncrement operandエラーが出る。 #include <stdio.h> int main(void){ char str[] = "hello"; while(*str){ printf("%c",*str++); } return 0; } 正しくはポインタをちゃんと作ってからループを回す。 #i</stdio.h>…

ポインタで代入とインクリメントが同時に行われるときの順序

http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/11-01.html 後置のインクリメント「 s = x++; 」が「 s = x; x = x + 1; 」の順で展開されるそれと同様に「 *p++ = 2*i; 」は「 *p = 2*i; 」→「 p++; 」と展開される。 代入されてからインクリメン…

fgetsで改行コードを削除したいとき

http://www1.cts.ne.jp/~clab/hsample/File/File03/File03.html改行コードをNULLターミネータに書き換える。 string[strlen(string) - 1] = '\0';

getsするとwarning: this program uses gets(), which is unsafe.と言われるとき

fgetsを使うのが推奨らしいhttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1036228470

ビットマスクの種類まとめ

◯ビットセット #define SET(x,y) (x |=(1<

MDX-15からフィードバックを得る方法

あとで読む http://www.cnczone.com/forums/general-cnc-mill-lathe-control-software-nc-/84014-get-feedback-roland-mdx-15-rml-1-a.html

VagrantのlprでPrinter not foundと言われるとき

http://ubuntuforums.org/archive/index.php/t-1391208.htmllpdを再起動する? $ sudo /etc/init.d/lpd restartしたけど変わらなかった。 VirtualBoxのデバイス認識に関する勉強が必要そう。

PythonでProcessingを使う

http://interactivepython.org/runestone/static/everyday/2013/05/1_processing.htmlインストールの際に-mno-fused-maddフラグでエラーが出たので /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py から -mno-fu…

pipのインストールファイルをキャッシュする

processingモジュールのインストールで必要になった http://stackoverflow.com/questions/10336308/how-to-cache-downloaded-pip-packages $ pip install --download-cache /path/to/pip/cache matplotlib