kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2014-11-08

BCB6 畢氏定理計算機

最近小孩正在學畢氏定理,說簡單還算簡單,但是要用計算機按半天,還要再開根號,蠻麻煩的,就寫了這個小程式,下面有部分程式碼,為何是部分?因為視窗程式很大部分是視窗元件,是BCB自動產生的,我們多半不需管它,只需專注於核心功能寫作就行了。

下載
https://www.dropbox.com/s/5qx8xpz8zmhm69h/BisTheory1.rar?dl=0



程式說明
這隻程式主要有兩個部分,一是三角形輸入幾個邊,要求哪個邊判定,第二是浮點數計算問題,程式碼如下

一、狀態判定,填入幾個邊了
int chkState(){
    UnicodeString s1,s2,s3;
    s1=edit1->Text;//1
    s2=edit2->Text;//3
    s3=edit3->Text;//5
    if(s1.Length()>0)mystate[1]=1;else mystate[1]=0;
    if(s2.Length()>0)mystate[2]=3;else mystate[2]=0;
    if(s3.Length()>0)mystate[3]=5;else mystate[3]=0;
    mystate[0]=mystate[1]+mystate[2]+mystate[3];
    return mystate[0];
}

這裡只要文字框產生 change()事件啟動,會檢查三個邊,字串長度>0,並分別給定其代表值,最後加總該值傳回,
a=1
b=3
c=5
如果傳回 8 ,代表b+c=8,那就知道要求的是 a 了。

二、浮點數計算
浮點數計算比較麻煩,因為有精度問題,動不動就會溢位,這裡沒專門處理這問題,只是簡單的提供精度設定,溢位就會變成負值,你就手動把精度調低些就好了。
精度就是靠四捨五入函式來完成,計算就是依據狀態判定來求相應的值。

四捨五入,使用整數法
double round(double src,int n){
    double res;
    int i,k=1;
    for(i=0;i<n;i++)k*=10;
    res=int(src*k+0.5);
    res/=k;
    return res;
}

計算
這裡沒用sqrt()函數,因為溢位時,會跳出一個對話 sqrt DOMAIN error,有點煩,所以改用求1/2平方來代替,溢位就是負值。

double calculate(){
    a=uStrToDouble(edit1->Text);
    b=uStrToDouble(edit2->Text);
    c=uStrToDouble(edit3->Text);
    switch (mystate[0]){
        case 8://a=sqrt(c^2-b^2);
            b2=pow(b,2);c2=pow(c,2);
            a2=c2-b2;
            //result=sqrt(round(a2,8));
            result=pow(a2,0.5);
            break;
        case 6://b=sqrt(c^2-a^2);
            a2=pow(a,2);c2=pow(c,2);
            b2=c2-a2;
            //result=sqrt(round(b2,8));
            result=pow(b2,0.5);
            break;
        case 4://c=sqrt(a^2+b^2);
            a2=pow(a,2);b2=pow(b,2);
            c2=a2+b2;
            //result=sqrt(round(c2,8));
            result=pow(c2,0.5);
            break;
    }
    return result;
}

2014-07-21

萬有引力從何而來?

萬有引力從何而來?這是現在最大的謎,解開了話,UFO動力問題也解開了。

簡單的說,目前磁力可以被製造,馬達就是了,但萬有引力沒辦法被製造,只能觀察,
例如你在地球上70KG,上月球就變成42KG了

如果:
我是說如果,我們已經發現萬有引力的機制,那我們可以任意產生個引力,

假如我就產生個>70KG的引力,方向與地球相反

那我就飛起來了,不用噴氣,不用磁場(也許要,也許磁場跟引力有關),不用螺旋槳。

那我就是UFO了,而且好處不只這些,我根本不用考慮慣性問題,不必管那幾個G。

因為我的重力參考原點是我自己,不是地球,所以我的G是我自己控制,根本不用管地球的G

那我就可以任意大於90度轉向,而不會血管爆裂。

這樣說夠迷人吧,這就是解開重力之謎的好處。

2014-07-11

Arduino GY-271 HMC5883L 三軸電子羅盤傳感器測試

下面是 GY-271 廠商的描述
用途:測量地磁方向,測量物體靜止時候的方向,測量傳感器周圍磁力線的方向。註意,測量地磁時候容易受到周圍磁場影響,主芯片HMC5883三軸磁阻傳感器特點:

1,數字量輸出:I2C數字量輸出接口,設計使用非常方便。
2,尺寸小: 3x3x0.9mm LCC封裝,適合大規模量產使用。
3,精度高:1-2度,內置12位A/D,OFFSET, SET/RESET 電路,不會出現磁飽和現象,不會有累加誤差。
4,支持自動校準程序,簡化使用步驟,終端產品使用非常方便。
5,內置自測試電路,方便量產測試,無需增加額外昂貴的測試設備。
6,功耗低:供電電壓1.8V, 功耗睡眠模式-2.5uA 測量模式-0.6mA



連接:
只要連接VCC,GND,SDA,SCL四條線。

Arduino  GY-271
-------------------------
VCC         VCC
GND        GND
A4            SDA
A5            SCL

P.S.我這塊 GY-271 是可以輸入 5V DC,但有的只能輸入3.3V DC,這個要看廠家的說明。

請注意:
HMC5883L.cpp 中必須更改下列字句,不然編譯會出錯,這是新版Arduino IDE變動的關係。
WProgram.h  ->  Arduino.h
Wire.send()  -> Wire.wirte()
Wire.receice()  -> Wire.read()

程式碼:

/*
HMC5883L_Example.pde - Example sketch for integration with an HMC5883L triple axis magnetomerwe.
Copyright (C) 2011 Love Electronics (loveelectronics.co.uk)

This program is free software: you can redistribute it and/or modify
it under the terms of the version 3 GNU General Public License as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

// Reference the I2C Library
#include <Wire.h>
// Reference the HMC5883L Compass Library
#include "HMC5883L.h"

// Store our compass as a variable.
HMC5883L compass;
// Record any errors that may occur in the compass.
int error = 0;

// Out setup routine, here we will configure the microcontroller and compass.
void setup(){
  // Initialize the serial port.
  Serial.begin(9600);
  Serial.println("Starting the I2C interface.");
  Wire.begin(); // Start the I2C interface.
  Serial.println("Constructing new HMC5883L");
  compass = HMC5883L(); // Construct a new HMC5883 compass.   
  Serial.println("Setting scale to +/- 1.3 Ga");
  error = compass.SetScale(1.3); // Set the scale of the compass.
  // If there is an error, print it out.
  if(error != 0) Serial.println(compass.GetErrorText(error));
  // Set the measurement mode to Continuous
  Serial.println("Setting measurement mode to continous.");
  error = compass.SetMeasurementMode(Measurement_Continuous);
  // If there is an error, print it out.
  if(error != 0) Serial.println(compass.GetErrorText(error));
}

// Our main program loop.
void loop(){
  // Retrive the raw values from the compass (not scaled).
  MagnetometerRaw raw = compass.ReadRawAxis();
  // Retrived the scaled values from the compass (scaled to the configured scale).
  MagnetometerScaled scaled = compass.ReadScaledAxis();
 
  // Values are accessed like so:
  int MilliGauss_OnThe_XAxis = scaled.XAxis;// (or YAxis, or ZAxis)

  // Calculate heading when the magnetometer is level, then correct for signs of axis.
  float heading = atan2(scaled.YAxis, scaled.XAxis);
 
  // Once you have your heading, you must then add your 'Declination Angle', which is the 'Error' of the magnetic field in your location.
  // Find yours here: http://www.magnetic-declination.com/
  // Mine is: 2� 37' W, which is 2.617 Degrees, or (which we need) 0.0456752665 radians, I will use 0.0457
  // If you cannot find your Declination, comment out these two lines, your compass will be slightly off.
  float declinationAngle = 0.0457;
  heading += declinationAngle;
 
  // Correct for when signs are reversed.
  if(heading < 0)    heading += 2*PI;
   
  // Check for wrap due to addition of declination.
  if(heading > 2*PI)    heading -= 2*PI;
  
  // Convert radians to degrees for readability.
  float headingDegrees = heading * 180/M_PI;

  // Output the data via the serial port.
  Output(raw, scaled, heading, headingDegrees);

  // Normally we would delay the application by 66ms to allow the loop
  // to run at 15Hz (default bandwidth for the HMC5883L).
  // However since we have a long serial out (104ms at 9600) we will let
  // it run at its natural speed.
  // delay(66);
}

// Output the data down the serial port.
void Output(MagnetometerRaw raw, MagnetometerScaled scaled, float heading, float headingDegrees){
   Serial.print("Raw:(x,y,z)=( ");
   Serial.print(raw.XAxis);
   Serial.print(", ");  
   Serial.print(raw.YAxis);
   Serial.print(", ");  
   Serial.print(raw.ZAxis);
   Serial.print(") Scaled:(x,y,z)=( ");  
   Serial.print(scaled.XAxis);
   Serial.print(", ");  
   Serial.print(scaled.YAxis);
   Serial.print(", ");  
   Serial.print(scaled.ZAxis);
   Serial.print(") Heading: ");
   Serial.print(heading);
   Serial.print(" Radians: ");
   Serial.print(headingDegrees);
   Serial.println(" Degrees.");
   delay(500);
}


執行結果

它只負責讀出三軸方向磁場強度,而角度要自己去算。

下載 HMC5883L LIB
https://www.dropbox.com/s/h062nnde78zts1l/HMC5883L.zip

參考資料
Arduino連接HMC5883L三軸電子羅盤傳感器
http://www.geek-workshop.com/thread-105-1-1.html

使用 Arduino Pro Mini + 驅動板 來驅動步進馬達 28BYJ-48 5VDC


這個是參考別人的,只是測試資料,做個筆記
例中一次轉一圈,停5秒,再反轉一圈

影片

驅動板及步進馬達
 程式碼

#include "myStepper.h"
#define STEPS 2048
Stepper stepper(STEPS,9,10,11,12);
void setup() {
  stepper.SetSpeed(5);
}
void loop() {
  stepper.Step(2048);
  delay(5000);
  stepper.Step(-2048);
  delay(5000); 
}


接線

Arduino   驅動板
--------------------------
D9             IN1
D10           IN2
D11           IN3
D12           IN4
VCC          +
GND          -

p.s.驅動板+-旁兩個JMP要CLOSE,驅動板最好獨立供電,避免 Arduino 燒毀,我只是測試會不會動,所以就直接接電用了XD

說明

原本應該是

#include <Stepper.h>

但我的 Arduino IDE v1.0.5 可能是內建了同名稱 LIB 導致 Link 會一直出現錯誤
所以就把它改個名子,放在同一個路徑下,這樣就可以正確編譯了

#include "myStepper.h"

 
下載
https://www.dropbox.com/s/e469pclk84fsbq3/myStepper.rar

參考資料
http://www.geek-workshop.com

2014-06-13

Arduino 有關 PWM 的參考資料

PWM 全名叫做脈衝寬度調變( Pulse Width Modulation,PWM)[1],是將類比信號 轉換為脈波的一種技術,一般轉換後脈波的週期固定,但脈波的占空比會依類比信號的大小而改變。
PWM 技術是一種對類比信號電位的數字編碼方法,通過使用高解析度計數器(調製頻率)調製方波的占空比,從而實現對一個類比信號的電位進行編碼。
它是一種數位控制訊號,抗干擾性較強,應用很廣,電壓和電流可直接用來進行控制對象,例如家用電器設備中的音量開關控制、採用鹵素燈泡燈具的亮度控制等等。

輸出電壓的控制
PWM透過對佔空比 DUTY_CYCLE 的波形產生,可以對輸出電壓達到控制目的。

圖一、DUTY_CYCLE
輸出電壓 Output_Voltage 就是佔空比乘以輸入電壓

Output_Voltage = Duty_Cycle * Input_Voltage


如圖一,輸入電壓是 0V-5V,佔空比是25%,輸出電壓就是

 Output_Voltage = 0.25 * 5 = 1.25V

也就是高電位 5V 的加總平均值


如輸入電壓是 0V-5V,佔空比是80%,輸出電壓就是

 Output_Voltage = 0.8 * 5 = 4V

所以我們只需控制輸出波形,就可以決定輸出電壓了。


以下討論對象是目前比較被廣泛採用的晶片 ATmega328,參考它的Datasheet [2]可知,它有三個時脈 Timer,分別是 Time0, Time1, Time2,我們可以通過對 Timer 的設定,來達到控制脈波輸出的特性。

以下是三個時脈的設定說明,節錄自 QEEWiki [3],這是要對Timer設定的重要參考,它已經被整理成表格狀,還附有一個範例程式,非常方便使用。

圖二、Time0

圖三、Time1

圖四、Time2





[1].http://zh.wikipedia.org/wiki/脈衝寬度調變
[2].http://www.atmel.com/Images/doc8161.pdf
[3].https://sites.google.com/site/qeewiki/books/avr-guide/pwm-on-the-atmega328

2014-05-29

巧治糖尿病

剛剛看到 YouTube 上一支關於糖尿病的影片,就順手把它貼過來了,我的親人飽受此病之苦,相信也有不少人有同樣的問題,大家可以看看。
其實,肥胖還是糖尿病的主因,就是要多運動,只要瘦下去,自然可以不藥而癒,但老年人,或是工作忙碌之人,可能就很困難有運動習慣了,那另一種方法就是飲食控制,若克制不了欲望,最後只好做胃繞道手術,挨一刀,來減少養分的吸收了。


2014-05-21

Arduino LCD12864 ST7920 parallel test...

這是 LCD12864 ST7920 並行測試,從官網下載一個範例程式,然後修改了一小部分程式碼,來方便理解其運作,自己加上了一個 VR,修改顯示字串等等。



線路配置(並行)



RS = 17; Analog Pin3
RW = 16; Analog Pin2
EN = 18; Analog Pin4
D0  = 8;
D1  = 9;
D2  = 10;
D3  = 11;
D4  = 4;
D5  = 5;
D6  = 6;
D7  = 7;
PIN15 PSB = 5V;(並行)

VR (3k) 配置
+ 5v
Analog Pin1
GND

官方12864網頁
http://playground.arduino.cc/Code/LCD12864

使用 Lib
LCD12864
http://playground.arduino.cc/uploads/Code/LCD12864.zip

官方原始碼
http://playground.arduino.cc/uploads/Code/pongLCD.zip

參考原始碼
//http://playground.arduino.cc/Code/LCD12864
#include <LCD12864.h>
int score = 0;//分數
boolean lost = false;//遊戲結束
int relive = 0;//復活讀秒
int top=128,down=159,left=0,right=63;
int Xpos = 0;//球座標 x
int Ypos = 133;//球座標 y
int momentumX = 2;//x增量
int momentumY = 1;//y增量
boolean momr = true;//球向右(x)
boolean momd = true;//球向下(y)
int PaddlePos = 139;// 130<PaddlePos<148 (128<y<160)
void setup() {
    LCDA.Initialise(); // INIT SCREEN
    delay(500); // Some delay
    LCDA.Render(); // Start the Rendering process
    Title(); // 畫 ASCII 字元
    delay(500); // Some Delay
}
void loop(){
    int tmp;
    tmp = analogRead(1);// 讀取VR值 0-1023
    PaddlePos = map(tmp,0,1023,129,149);// 把 0-1023 值轉為 130-148
    run();
}
void AI(){// BALL MOVEMENT 球移動
    //left=0,right=63
    if (Xpos+momentumX < right && momr == true) {
        Xpos+=momentumX;//x->
    }else if (Xpos+momentumX >= right && momr == true) {
        Xpos-=momentumX;//x->反彈
        momr = false;//<-x
    }else if (Xpos-momentumX > left && momr == false){
        Xpos-=momentumX;//<-x
    }else if (Xpos-momentumX <= left && momr == false){//反彈<-x
        if (Ypos+1 >= PaddlePos && Ypos < PaddlePos+10) {//擊中
            Xpos+=momentumX;//反彈||<-x
            momr = true;//x->           
            scored();//計分
            // 變化球,棒子兩端+-3
            if (Ypos < PaddlePos+3 || Ypos-1 > PaddlePos+7) {
                if (momentumY < 4)  momentumY +=2;
            }else{
                if (momentumY > 1)  momentumY -=1;
            }
        }else{// 沒擊中
            lost = true;
        }
    }
    //top=128,down=159
    if (Ypos+momentumY < down && momd == true) {//向下
        Ypos+=momentumY;
    }else if (Ypos+momentumY >= down && momd == true) {//向下反彈
        Ypos-=momentumY;
        momd = false;
    }else if (Ypos-momentumY > top && momd == false){//向上
        Ypos-=momentumY;
    }else if (Ypos-momentumY <= top && momd == false){//向上反彈
        Ypos+=momentumY;
        momd = true;
    }
}
void run() {//循環
    if (lost == false) {
        AI(); 
        LCDA.DumpScreenBuffer(0,0,8,32);//清空記憶體資料(X,Y,maxX,maxY)
        // Draw Room (x,y,w,h),畫框(0<=X<=63),(128<=Y<=159)
        //top=128,down=159,left=0,right=63
        LCDA.FillRectangle(left,top,right,1);
        LCDA.FillRectangle(right,top,1,32);//60,128
        LCDA.FillRectangle(left,down,right,1);//0,158
        // Draw Ball 畫球
        LCDA.FillRectangle(Xpos,Ypos,2,2);// 2*3 球
        // Draw Paddle 畫板子
        LCDA.FillRectangle(1,PaddlePos,2,10);// 2*10 板子
        LCDA.RenderScreenBuffer(0,0,8,32);//送出記憶體資料
    }else{
        relive++;
        if(relive>3000){//復活讀秒=3秒
            lost = false;
            relive=0;
            score=0;
        }
    }
}
// 秀數字
void numbertobinary(char num) { //RS=1,RW=0,寫資料到內部 RAM (RS,RW,D7,D6,D5,D4,D3,D2,D1,D0)
    if (num == 0)         LCDA.setPins(1,0,0,0,1,1,0,0,0,0); //30h=48=0
    else if (num == 1)    LCDA.setPins(1,0,0,0,1,1,0,0,0,1); //31h=49=1
    else if (num == 2)    LCDA.setPins(1,0,0,0,1,1,0,0,1,0); //32h=50=2
    else if (num == 3)    LCDA.setPins(1,0,0,0,1,1,0,0,1,1); //33h=51=3
    else if (num == 4)    LCDA.setPins(1,0,0,0,1,1,0,1,0,0); //34h=52=4
    else if (num == 5)    LCDA.setPins(1,0,0,0,1,1,0,1,0,1); //35h=53=5
    else if (num == 6)    LCDA.setPins(1,0,0,0,1,1,0,1,1,0); //36h=54=6
    else if (num == 7)    LCDA.setPins(1,0,0,0,1,1,0,1,1,1); //37h=55=7
    else if (num == 8)    LCDA.setPins(1,0,0,0,1,1,1,0,0,0); //38h=56=8
    else if (num == 9)    LCDA.setPins(1,0,0,0,1,1,1,0,0,1); //39h=57=9
}
void Title() { // 秀 ASCII 字元
    LCDA.Draw(false,25,0);//(sw,x,?)
    delay(1);
    byte title[] = {
        0,1,1,0,1,0,1,1,//0x6b=k
        0,1,1,0,1,1,1,1,//0x6f=o
        0,1,1,1,0,1,1,1,//0x77=w
        0,1,1,0,0,0,0,1,//0x61=a
        0,1,1,0,1,1,0,0,//0x6f=l
        0,1,1,0,0,0,0,1,//0x61=a
        0,0,1,0,0,1,1,1,//0x27='
        0,1,1,1,0,0,1,1,//0x73=s
        0,0,1,0,0,0,0,0,//0x20=
        0,1,1,0,1,0,0,0,//0x68=h
        0,1,1,0,1,1,1,1,//0x6f=o
        0,1,1,0,1,1,0,1,//0x6d=m
        0,1,1,0,0,1,0,1 //0x65=e
    };
    int count = 0;
    int counter = 0;
    while (count < sizeof(title)/sizeof(byte)) {
        for (int i = count; i < count+8; i++) {
            LCDA.temp[counter] = title[i];
            counter++;
        }
        LCDA.setPins(1,0,
            LCDA.temp[0],LCDA.temp[1],LCDA.temp[2],LCDA.temp[3],
            LCDA.temp[4],LCDA.temp[5],LCDA.temp[6],LCDA.temp[7]);
        count += 8;
        counter = 0;
    }
    LCDA.Draw(true,0,0);
}
void scored() { // 計分+1
    LCDA.Draw(false,12,20);
    delay(1);
    score++;
    momentumX = random(3, 6);
    if (score < 10) {
        numbertobinary('0');
        numbertobinary('0');
        numbertobinary(score);
    }else if (score < 100) {
        int res = score/10;
        int lef = score%10;
        numbertobinary('0');
        numbertobinary(res);
        numbertobinary(lef);
    }else if (score < 1000) {
        int res = score/100;
        int lef = score%100;
        int res2 = lef/10;
        int lef2 = lef%10;
        numbertobinary(res);
        numbertobinary(res2);
        numbertobinary(lef2);
    }
    LCDA.Draw(true,0,0);
}
 補充說明

void Title() { // 秀 ASCII 字元
    LCDA.Draw(false,25,0);//(sw,x,?)

在文字顯示中,X座標指定,是從左上角,由0開始,分成四行,一直到右下角為止,如下表所示。

 ASCII 字碼輸入

 LCDA.setPins(1,0,0,0,1,1,0,0,0,0); //30h=48=0

 setPins() 的位元如下

 (RS,RW,D7,D6,D5,D4,D3,D2,D1,D0)

 RS=1,RW=0,時,為寫資料到內部 DRAM,D0-D7 為 ASCII Code,請參考下表

例如我們要在螢幕中央顯示 7,那 X 就是 12,然後先關掉繪圖,並指定 X

LCDA.Draw(false,12,0);

接著輸入 7 的 ASCII CODE,查上表為 0x37 ,二進位碼  00110111 ,可由計算機轉換


然後寫入,頭兩個位元必須是 RS=1,RW=0,後面就是二進位碼  00110111,如下

 LCDA.setPins(1,0,0,0,1,1,0,1,1,1);

最後就是把繪圖打開,就會顯示了

 LCDA.Draw(true,0,0);

2014-04-21

AutoCad 物件任意角轉正

有時,會用ROTATE把物件旋轉,但轉了之後,又想把圖轉正,卻轉不回來了,我想了好久,終於被我搞出來了,做個筆記。

筆記,物件轉正,及另一個對齊任意線。


實例

先做兩條輔助線,水平線跟機頭中心線對水平線的鏡射線,就是大約30度那條。

選機頭物件,使用ROTATE指令,以上述兩線交點為基準點,旋轉至大約30度那條端點。

清掉輔助線,完成。

2014-04-08

快點通過服貿,貨貿,這比TPP重要太多了

 那些學生沒有正當性,玩不下去了,結束了一場鬧劇,不然每天新聞吵來吵去的,很煩的。

世界已經悄悄的改變,現在全世界都在搶大陸市場,大陸即將步入全球最大的消費市場,以前世界工廠使大陸累積財富,未來是13E人口的消費力量養活全世界, 很多商業行為是要搶個先機,卡個位,別在起跑點就敗給韓國了,別因為為反對而反對的民進黨而把台灣葬送掉,請快點通過服貿,貨貿,這比TPP重要太多了。

台灣的物流業很不給力,台灣的產品要宅配到全世界,成本高的嚇人,反觀大陸的物流到全世界,快速又廉價,這關節沒搞好,台灣零售業、宅經濟出不去的,不利中小企業發展。

想說兩句對服貿的看法嗎?來這裡吧。

張忠謀給大家的一堂課 「不簽服貿台灣玩完」到底誰在嚇唬誰!?1030407-02
https://www.youtube.com/watch?v=cea-Q-TIcrU

2014-03-20

蘇X昌的陰謀,拉學生當打手。

看看最近的新聞,亂七八糟,實在不得不說,看看那麼多群眾,去問問服貿是什麼?看有幾個答得出來,答出的有幾個正確。
那他們知道去幹麻?一切都是被利用,待我細細說來。

一、民進黨的困境
大家都知道,中國的進步,即將成為世界第一大經濟體,台灣的邊緣化,此消彼長,越發的獨立不可行,反而統一變成趨勢,台灣只是美國對付中國,牽制中國的一顆棋子,台獨黨綱的民進黨也知道趨勢所在,小英的敗選,謝X廷訪中,都是暗示著民進黨的轉型,放棄台獨黨綱,非左非右向中靠,唯有如此,才能吸引到反馬的中間選民,才能贏得執政,成為真正的反對黨。

二、馬英九的無能
馬英九的無能源自於它的個性,優柔寡斷,胸襟狹隘 ,不能用人,所以一些不錯的政策,到他手裡就變爛了,王金平事件,服貿協定...都是,王金平藍皮綠骨,八面玲瓏,是該拔,但不至於開除黨籍,服貿原本是中國的統戰,讓利台灣,目的是收攬台灣民心,結果都變樣了。
提醒大家,反馬跟服貿是兩回事,別被有心人給利用了,最後使台灣喪失競爭力,企業被逼的棄守台灣。

三、前進總統大位
這是蘇一直再做的春秋大夢,學生打手只是它的一石二鳥之計,首先就緊咬服貿,抹紅藍營,理由是"黑箱服貿",切~這也是理由 = =
請問它是行政院長還是總統,有什麼政策難到還要請示它嗎?只要是福國利民的,有何不可?可笑的是,居然能鬧那麼久,還拖了一群學生去鬧,我建議調查局去查查誰背後唆使,扇動群眾。
再來是製造刻板印象,服貿=賣台=中共同路人,這樣可以鞏固一些無知的群眾,又可以打壓小英跟謝X廷,這些希望民進黨轉型、進步的推手,被抹紅,最後再趁勢拉幫結派,奪取黨主席之位,上看總統大選。

四、胡說八道的抱怨
我真的不知道,台灣的民眾那麼弱智,台灣的學生,那麼的無知,連這種理由"黑箱服貿",都能把人耍得團團轉,真好笑。那個清大的什麼學生,丟臉死了,不知尊敬師長,"根本"都不懂的人,還在那裏泛政治,建議他回家研究一下小學而大遺,孰為小孰為大。

五、未來展望
還是一句老話,現在全世界都想跟中國做生意,中國的13E人口市場大餅,可以養活全世界,連敵對的日本也在擔憂,失去中國市場的經濟該如何走下去,還動腦筋到台灣身上,在台設立公司,以台名義進軍中國,而今日中國為了統一,讓利台灣,服貿就是想要把台灣視為同一國,消除一切障礙,這比任何優惠還優惠,卻被這群豬搞成這樣。
說句難聽的,你台灣不要,人家韓國搶著要呢,還有東盟呢,等被別人卡位完,再怨嘆進入中國市場太慢,人家中國可是把最好的位子留給你了,自己給臉不要臉。

2014-03-19

Arduino I2C Test

最近迷上了這個小東西,覺得還蠻有趣,以後可能會 POST 一些相關的測試上來。

先貼個 I2C 主從架構的連接通訊

主機是 UNO,從機是 Pro Mini


Pin 腳是固定的,接線(固定這樣接)

UNO --- Pro Mini
-------------------
A4 ------ A4 (SDA)
A5 ------ A5 (SCL)
5V ------ VCC
GND ------ GND

主機程式 (Master)

#include <Wire.h>
void setup(){
  Wire.begin();
  Serial.begin(9600);
  Serial.println("Ready Master");
}
void loop(){
  int val;
  if(Serial.available()>0){
    val=Serial.read();
    if(val==49){//49='1'
      Wire.beginTransmission(4);//connect to slave 4
      Wire.write(1);
      Wire.endTransmission();
      Serial.println("49 TURN ON LED");
      delay(10);
    }else if(val==50){//2
      Wire.beginTransmission(4);//connect to slave 4
      Wire.write(0);
      Wire.endTransmission();
      Serial.println("50 TURN OFF LED");
      delay(10);   
    }else{
      Wire.beginTransmission(4);//connect to slave 4
      Wire.write(val-48);
      Wire.endTransmission();     
      Serial.print(val-48);
      Serial.println(" <-- Undefine command.");    }   
  }
}


從機程式 (Slave)

#include <Wire.h>
int pinLed = 13;
void setup(){
  Wire.begin(4);
  Wire.onReceive(rxEvent);
  pinMode(pinLed,OUTPUT);
}
void loop(){
  delay(100);
}
void rxEvent(int count){
  int c = Wire.read();
  if(c==1){
    digitalWrite(pinLed,HIGH);
  }else if(c==0){
    digitalWrite(pinLed,LOW);
  }else{
    for(int i=0;i<c;i++){
      digitalWrite(pinLed,HIGH);delay(300);
      digitalWrite(pinLed,LOW);delay(300);
    }
  } 
}

連線後,從主機打開串口視窗,從這發出命令,


輸入1,從機 LED 點亮
輸入2,從機 LED 熄滅
輸入其他,就一直走迴圈,亮到該鍵的數值走完為止。


2014-03-14

大家應該來反民進黨

只要國民黨有什麼政策,那些民進黨的就哇哇叫,真是台灣的亂源,阻礙進步的黨,一堆政客利用善良百姓來取得政治資源的組合體,大家應該唾棄民進黨。

說什麼反服貿,甚麼黑箱作業,說白了就是要面子嘛,真搞不清楚現在是哪個黨在執政,有什麼政策難道民進黨說了算?真是笑話,等拿到執政權再來搞抗爭杯葛阿。

服貿是什麼?只會一昧的反,現在全世界都想跟中國做生意,而大陸釋出善意,讓利台灣,再不簽,機會就被韓國搶去了,一群白癡,等到沒生意做再來叫罵馬英九無能是吧!
真是一群奸詐狡猾之徒,只會騙選票,騙鄉下老農。

2014-02-26

想戒菸嗎?只要你想,我提供方法。

想戒菸嗎?只要你想,我提供方法。

以下是本人經驗,我是20多年的老菸槍,從國中開始抽到結婚後,大概每天1-2包長壽菸,我用的方法很簡單,而且一次就戒掉,沒再抽了,到現在已經快10年了。

不多說,開始介紹這方法,這方法是很有效的。
簡單的說,戒菸很難,難在於把你心愛的東西拿走,捨不得,放不下, 這是一定戒不掉的。

那該怎麼戒呢?
那就不要戒阿~

難戒就不要戒,這就是我的方法。

每當我想要抽的時候,我就想 " 等一下再抽 ",然後等一下再等一下,一等就幾十年了。。。

很簡單吧,細細想來,這跟心理學是有關的,要搶走你心愛的玩具,一定很不捨,既然不捨,那就不要捨,就等一下再玩,這樣就沒有失落感了。

這是後話了,沒抽菸之後,身體就開始自然排毒,身上臉上就會長一些像青春痘,一擠就都是菸油,都是尼古丁的味道,大概持續半年左右,身上就不會一身臭菸味了,如果再配合不吃肉,那排毒效果更明顯。

因為現在的肉都不能吃阿,你想,養一隻雞要半年,如果把它縮短到一個月,那節省下來的飼料錢多少?還沒賣出就先賺了飼料錢,還有人事管理費。於是就開始用生長激素賀爾蒙來縮短生長期,雞隻會生病,增加損耗率,就用抗生素來餵食,這就是大家在夜市吃的鹽水雞,滷味,Mxx,肯xx炸G等等,這些就是造成小學生1-2年級,月經就來的主要因素,1-2年級來月經會怎樣?就成熟了阿,就不會再長高了,矮冬瓜的,您不會希望自己的女兒是這樣子吧。

換說牛肉,台灣牛肉主要是來自美國,大家都知道,要賣相好一點,就是肥少瘦多,這就是瘦肉精添加的問題,瘦肉精對人體會怎樣,我不知道。不過我想,大家永遠都不會知道,就算有研究報告出來也會很快不見,因為這是美國的利益,我只知道,上禮拜新聞,有位20幾歲女子,每天吃一碗牛肉麵,竟然罹癌,大家可以去看看新聞,不是我亂說。

那豬肉呢?總該沒事吧!豬肉來源主要都是本地養的,我高中時候聽養豬的同學說,他告誡我別吃香腸,肉乾,肉鬆之類東西,他說他們死掉的豬,都有專門的人在收,那是好朋友才說的。。。
 那活著的豬呢?該有的藥一樣不少,抗生素,生長激素,瘦肉精之類,因為本地產的不像檢疫那麼嚴格,瘦肉精都被驗出毒性最強,最高級的那種,只能在宰殺前一周停藥,有的甚至3天,因為停太早豬隻會生病會掛,這道理大家該懂的。

 那剩下蔬菜類了,這人類生存的最後一道防線,這總能吃了吧~~~
沒錯,這是能吃,沒放藥的蔬菜一定有蟲咬,葉子 一定很醜,坑坑洞洞的,請問你買的菜是這樣的嗎?嗯,不用回答我,我不想知道,因為我也不會買那種菜啦~
接著是重點,任何農藥都有藥效殘留問題,譬如1周的話,那採收前一周停藥,那賣到市場上藥量殘留是可被接受的,回家用水浸泡後沖洗,再切,這樣OK的。
問題是農民似乎沒在管這個,或者不知道,他們對農藥的知識是很抱歉的,都是農藥店說:這支牌子好,哪步行再加另一支,比例2000,農民回家後就想,我ㄟ田蟲卡賊,某用1000對好。。。
就是這樣子 啦~

本世紀上演的就是,能源,食物之戰。

我好像扯遠了,見人就是矯情!

2014-01-27

STC-ISP v4.80-繁體免安裝版

 終於找到繁體版,做做小東西很方便,存檔備用。

簡介
STC-ISP 是一款單片機下載編程燒錄軟件,是針對STC系列單片機而設計的,可下載STC89系列、12C2052 系列和12C5410等系列的STC單片機,使用簡便,現已被廣泛使用。

http://baike.baidu.com/link?url=IcVy9Nxd21ZtlcTiT2c6XIyTWOSpX3xlncKXYY_I-k-1ny4IToKY4CGL7ioC8xuhR5aTVojT3aHtynZxwG_sW_



繁體下載
stc-isp-v4.80-繁體免安裝.rar