2017年9月14日 星期四

關於高中職升學的建議-戰略、戰術與戰法

關於高中職升學的建議

恭喜你進入國三階段,今年最重要的事情是面對人生中第一次的大考,而考試本身的重點不僅是在於考多少分數,更重要的是培養:如何面對不能逃避的戰爭的能力,這些能力包含心態、作息、方法與後設認知(知道自己怎麼知道的認知),這些能力是會跟著你一輩子的,而這次升學也會決定你人生的某個方向。

對國中生而言,你從小到大的生活圈可能不會超過2公里,你的同學也大多是從他們的2公里生活圈過來的,不過升上高中職之後,你的同學可能就是以縣市為單位,集合到這所學校,所以你可能會遇到不同生活形態與文化的衝擊,高中職會匯集讀書能力接近、智力智商接近,甚至於社經地位接近的同縣市同學,這對你未來發展中一定具有很大影響力的,這生活圈的範圍可能擴展到大約10公里。
而高中職的下一步:大學科大,就會從全台灣集中到你的學校,你會看到更多元的樣態,這些具有不同人生經歷的同儕,會型塑出不一樣的文化與環境,直接的影響你人生未來與心態。
大抵上來說,人生的精采與豐富的程度,跟他能夠觸及的生活圈有很大關係,雖然現在網路或書籍資源有漸漸迎向一個沒有界線的生活圈,但其實多數人還是畫地自限在一個小範圍內,這對於生命而言是非常可惜的一件事情,請好好的拓展你的生活界線與視野,在未來能夠展翅高飛。這就是為什麼要打好這一仗的關係。

而我們將面對考試這件事情分成三個層面:戰略、戰術與戰法
「戰略」就是為誰而戰,為何而戰,你的目的與願景是什麼?
高中職升學考試對於一個國中生而言,可能是為了自己更美好的未來、為了尋求知識能力同溫層的未來同儕、為了父母師長念書、為了光宗耀祖、為了跟喜歡的人念同一所學校、為了高中職校風校服的夢幻泡泡、為了不想輸等等……
如果你能知道自己為了什麼要念書,應該要趁這次機會培養怎樣的能力,這樣你就可以時常用這個原因堅定自己的腳步,也就是所謂的:莫忘初衷。

立定了方向後,你必須開始規劃需要做的事情,也就是行事曆與課表,這就是所謂的「戰術」層面。
把國中三年的課本疊起來吧!你會發現國中課本只有5*6學期=30本,而且這30本書其實不會很厚,內容其實也不多,所以不要擔心,你一定可以完成的。
請記得:計畫總是趕不及變化,但沒有計畫就一事無成。計畫是用來落後的,心態是用來調整的。知道死線deadline,才能更主動的推動自己。
在安排課表的時候,有個重要的觀念要提醒你,最重要的課表內容是:玩樂、休息、空白與運動的時間,請一定記得放在你的課表之中。
課表是以一周七天、每個小時為單位,一到五大概有10-15個小時可以運用,三上可能還用不到星期日這天,星期天就好好休息吧,100天左右在考慮規劃周日課表,下面是簡單的課表形式。


































午休


































19:00-20:00







20:00-21:00







21:00-22:00







當你確實按表操課,你的長輩家人也會更尊重你的安排與信任你的能力,要展現自己的決心與規劃,才有本錢不受他人耳語的撩擾。當他人說:為什麼你現在不去看書,你只要堅定地回答:這個小時是我休息玩樂的時間即可。
空白時間可以用來捕這周的不足,讓你趕不上的計畫有緩衝的餘地(無論是課程進度或是心情都可以緩衝)。這個星期哪個科目沒有達標呢?我的心情狀況如何呢?有沒有需要調整的地方?都可以運用這個空白時間來規劃調整。
運動與規律的作息有助於記憶與學習,每周安排至少3個小時的運動,讓身體流汗,把壓力跟負擔通通排掉,至少需要睡眠6小時以上(其實最好是7小時),睡覺是大腦清除無用垃圾、將短期記憶轉換成長期記憶的重要時刻,甚至於做夢可以有跨腦區的連結,啟發你的創意思考,這些讓身體更健康的作為,絕對也會讓你的成績正向的發展,作戰時最忌諱拖延,請確實地按表操課,一年下來,你一定可以學到新的技能,也能更肯定自己有能力可以做好面對未來挑戰的能力,請把這次的大考當作人生的第一戰,然後凱旋歸來吧!


「戰法」部分,就是各科面對的不同方式與解題技巧,這部分留給下回「讀書心法篇」分曉吧。

2017年2月2日 星期四

arduino-蜂鳴器練習

參考書籍:數位時代的端士刀來了:Arduino開創物聯網大局

好久沒有寫網誌了,也好久沒有寫程式了(從大四跨系選修程式語言到現在)
準備要玩arduino,就記錄一下學習新事物的過程吧

要發出聲音需要蜂鳴器,蜂鳴器分成有源蜂鳴器、無源蜂鳴器兩種
有源蜂鳴器只能發出單頻率的聲音,可以拿來寫警告音或是練習摩斯密碼
無源蜂鳴器就可以發出不同頻率的聲音了


這次在修改程式的時候遇到幾個問題
  1. 升半音的頻率是多少?
    查了資料發現升降半音的頻率是原頻率*2^(1/12)  [原頻率乘於2的12分之1次方]
  2. 想要定義節拍長度該如何?
    在22行int time[]={   };    //輸入節拍,設定聲響時間長度
  3. 不發出聲音的休止符要怎麼處理?
    一開始我是設定#define O1 000  頻率為0,結果發現蜂鳴器會發出雜音,後來在程式中加入了is else的函數,可是還是有缺陷,因為這樣就不能設定休止符拍子數了,目前剩下這個bug無法解決
    if(time[i]>0)                        //判斷時間是否為不發聲的0,如果不是發聲
         delay(time[i]*250);
    else{                                 //判斷時間是否為不發聲的0,如果是不發聲
          noTone(p);
          delay(250);
          }
  4. 變調該如何處理
    第一首「給愛麗絲」前段問題解決了,結果第二首的「恭喜恭喜」出現了變調...,還變了兩次,所以我又要學會讀五線譜上變調時的拍子怎麼讀,可是最後還是卡在變太多種了,我無法解決0.5拍的問題...(其實只要換成整數倍就好了,不過我懶惰惹...)
總之學習就是這樣,一直解決問題,運用舊經驗、google、書籍學到新東西,附上這次修改的三個函數


以下是我改寫的函數部分,歌曲是 給愛麗絲 的前半段,也就是垃圾車的音樂啦

-----  程式分隔線  -----
//定義音階常數
#define C41 262  //1 Do
#define D41 294  //2 Re
#define E41 330  //3 Mi
#define F41 349  //4 Fa
#define G41 392  //5 Sol
#define G42 415  //#5 #Sol
#define A41 440  //6 La
#define B41 494  //7 Si
#define C51 523  //1 Do_h
#define D51 587  //2 Re_h
#define D52 622  //#2 #Re_h
#define E51 659  //3 Mi_h
#define F51 698  //4 Fa_h
#define G51 784  //5 Sol_h
#define A51 880  //6 La_h
#define B51 988  //7 Si_h
#define O1 000  //休止符
//要學習升降半音的方式是:頻率*2^(1/12)
int p=10;
int scale[]={E51,D52,E51,D52,E51,B41,D51,C51,A41,O1,E41,A41,B41,E41,G42,B41,C51,E41,E51,D52,E51,D52,E51,B41,D51,C51,A41,O1,E41,A41,B41,E41,C51,B41,A41};  //輸入歌曲音調
int time[]={1,1,1,1,1,1,1,1,3,0,1,1,3,1,1,1,3,1,1,1,1,1,1,1,1,1,3,0,1,1,3,1,1,1,3};    //輸入節拍,設定聲響時間長度
int length;

void setup() {
  pinMode(p,OUTPUT);                      //設定針腳輸出模式
  length=sizeof(scale)/sizeof(scale[0]);  //取得曲譜陣列的長度
}

void loop() {
  for(int i=0;i<length;i++){
    tone(p,scale[i]);
 
    if(time[i]>0)                        //判斷時間是否為不發聲的0,如果不是發聲
      delay(time[i]*250);
    else{                                 //判斷時間是否為不發聲的0,如果是不發聲
      noTone(p);
      delay(250);
      }
    noTone(p);
    delay(0);
  }
  delay(1000);
}

-----  下一首是恭喜恭喜  -----
//定義音階常數
#define G40 196  //5 Sol
#define G402 208  //#5 #Sol
#define A40 220  //6 La
#define B40 247  //7 Si
#define C41 262  //1 Do
#define D41 294  //2 Re
#define E41 330  //3 Mi
#define F41 349  //4 Fa
#define G41 392  //5 Sol
#define G42 415  //#5 #Sol
#define A41 440  //6 La
#define B41 494  //7 Si
#define C51 523  //1 Do_h
#define D51 587  //2 Re_h
#define D52 622  //#2 #Re_h
#define E51 659  //3 Mi_h
#define F51 698  //4 Fa_h
#define G51 784  //5 Sol_h
#define A51 880  //6 La_h
#define B51 988  //7 Si_h
#define O1 000  //0
//要學習升降半音的方式是:頻率*2^(1/12)
int p=10;
int scale[]={A40,B40,C41,D41,F41,E41,E41,E41,A41,A41,E41,E41,D41,D41,D41,F41,E41,D41,D41,C41,C41,C41,B40,A40,G402,A40,A40,D41,E41,C41,E41,B40,E41,A40,E41,D41,E41,C41,E41,B40,E41,A40};  //輸入歌曲音調
int time[]={1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,2,2,2,1,2,1,2,1,2,1,2,1,2,1,3,3,2};    //輸入節拍,設定聲響時間長度
int length;

void setup() {
  pinMode(p,OUTPUT);                      //設定針腳輸出模式
  length=sizeof(scale)/sizeof(scale[0]);  //取得曲譜陣列的長度
}

void loop() {
  for(int i=0;i<length;i++){
    tone(p,scale[i]);
 
    if(time[i]>0)                        //判斷時間是否為不發聲的0,如果不是發聲
      delay(time[i]*250);
    else{                                 //判斷時間是否為不發聲的0,如果是不發聲
      noTone(p);
      delay(250);
      }
    noTone(p);
    delay(0);
  }
  delay(1000);
}

-----  下一個是有源蜂鳴器的摩斯密碼  -----

int b=10;    //蜂鳴器針腳
int s=300;   //基準時間
void dot();  //宣告點訊號
void dash(); //宣告劃訊號
void wait(); //宣告字母間隔

void setup() {
  pinMode(b,OUTPUT);    //設定針腳模式為輸出
}
//交替向針腳輸出高低電壓
void loop() {
  dot();dot();dot();    //呼叫dot()函數發送3個點訊號
  wait();
  dash();dash();dash(); //呼叫dash()函數發送3個劃訊號
  wait();
  dot();dot();dot();    //呼叫dot()函數發送3個點訊號
  delay(3000);
}

//定義dot()函數
void dot(){
  digitalWrite(b,HIGH);
  delay(s);
  digitalWrite(b,LOW);
  delay(s*2);
}
//定義dash()函數
void dash(){
  digitalWrite(b,HIGH);
  delay(s*3);
  digitalWrite(b,LOW);
  delay(s*2);
}
//定義wait()函數
void wait(){
  delay(s*7);
}