Thứ Bảy, 9 tháng 1, 2016

Mạch phát nhạc bằng arduino

Mấy hôm rồi tôi rảnh rỗi quá đến nỗi tìm đến 1 mạch điện tử để xem thế nào. Tôi tìm thấy 1 mạch điện chơi nhạc từ thẻ nhớ như sau:
Nguyên liệu:
- Arduino nano
- Module microSD
- 1 transistor NPN
- 1 điện trở 3k
- 1 điện trở 22k
- 5 nút bấm nhỏ
- 1 loa 3W
- vài dây dẫn để kết nối các thứ lại với nhau, mỏ hàn, dây chì....
Chúng ta sẽ thiết kế mạch như sau:

Điều thú vị của các vi điện tử là có thể lập trình cho nó, và ta làm một code sau đây, bạn cứ lên mạng tìm hiểu về lập trình Arduino là sẽ tìm được phần mềm và công cụ lập trình, điều quan trọng là arduino này có thể nạp code thông qua cổng USB của mình, không cần phải mua thêm mạch nạp này nọ, hoặc ra tiệm điện tử gì cả.
//thư viện đọc thẻ nhớ
#include <SD.h>
//thư viện đọc nhạc WAV
#define SD_ChipSelectPin 10
#include <TMRpcm.h>
//khởi tạo biến đọc nhạc WAV
TMRpcm audio;
//các biến trạng thái
int SV1;
int SV2;
int SV3;
int SV4;
int SV5;
int led=19;
int count=0;
char* temp;
void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.print("khoi dong");
    if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
  return;   // don't do anything more if not
  }
  //ta đặt chân 19 là chân ra tín hiệu đèn
  pinMode(led,OUTPUT);
  //các chân 14-18 dùng để đọc tín hiệu nút bấm
pinMode(14,INPUT);
pinMode(15,INPUT);
pinMode(16,INPUT);
pinMode(17,INPUT);
pinMode(18,INPUT);
//với arduino thì tín hiệu âm thanh nên được đặt là chân 9
audio.speakerPin = 9;//luon la 9 cho nano
//đặt âm lượng lớn nhất là 7
//audio.setVolume(6);
audio.play("dd_01.wav");
}
//bắt đầu vòng lặp
void loop() {
  //đọc tín hiệu từ các chân đã thiết lập đọc tín hiệu
  if(audio.isPlaying()==1){Serial.println("playing......");}else{Serial.println("no sound found");}
SV1=digitalRead(14);
SV2=digitalRead(15);
SV3=digitalRead(16);
SV4=digitalRead(17);
SV5=digitalRead(18);
//sau đó là so sánh, nếu ở chân đó được nối âm, điện thế bằng 0 thì ta cho phát nhạc tương đương với nút bấm
if(SV1==LOW) nplay("bt_01.wav");
if(SV2==LOW) nplay("lv_01.wav");
if(SV3==LOW) nplay("hlv_01.wav");
if(SV4==LOW) nplay("ngu_01.wav");
if(SV5==LOW) nplay("dd_01.wav");
if(audio.isPlaying()==0){
  if(count==1){audio.play(temp); count=0;}
  }
}
//đây là hàm phát nhạc từ tên bài hát

void nplay(char* fn){
  temp=fn;
  count=1;
  //kiểm tra xem có phải đang phát 1 bài nào ko, nếu phải thì cho dừng lại
  if(audio.isPlaying()==1){audio.stopPlayback();}
  //cho đèn led sáng nhé.
  digitalWrite(led,HIGH);
  //cho phát nhạc nào
  audio.play(fn);
  //tắt đèn led
  digitalWrite(led,LOW);
  }

Trong code của tôi còn cho tín hiệu đèn Led ra chân 19 nữa cơ, nếu bạn không thích bạn có thể bỏ đi, còn thích thì cứ lắp thêm 1 led vào chân 19 là được. đầu với arduino là đầu dương, đầu kia nối âm.

Nhạc lưu trong thẻ (định dạng Fat) là nhạc WAV (16Khz, mono, 8bit per sample)


Thứ Năm, 7 tháng 1, 2016

In trang chẳn lẻ trong Excel thế nào

Nhiều khi bạn muốn in 2 mặt trang Excel mà lại không có một máy in thật sự hiện đại, nếu in một mặt thì phí giấy quá. chẳng lẽ bạn lại ngồi nhấn Ctrl+P rồi sau đó điền from 1 to 1, from 2 to 2.....
Đó không phải là một chuyện dễ dàng gì, nhưng nhiều khi bạn vẫn phải làm vì vấn đề tiết kiệm
Tôi đã tìm được 1 macro trên trang giaiphapexcel, nhưng tôi lại viết 1 cái cho mình thì tốt hơn, nếu bạn thích bạn có thể dùng nó. Phím tắt để khởi động nó là Ctrl+M.
bạn tải về máy.
https://app.box.com/s/2vxxv04vuwijckxfwtnx3ee0628o9htr
Sau đó bạn khởi động Excel, vào Excel Options, Add-ins, Go
bạn nhấn Browser... sau đó tìm đến nơi bạn lưu macro và nhấn Open để mở nó.
sau đó có vài cảnh báo hỏi bạn có muốn enable macro không bạn có nhấn ok.
Thế là xong bạn có thể bây giờ nhấn Ctrl+M để hiện thị menu in này.




Thứ Sáu, 1 tháng 1, 2016

Quản lý lưu lượng sử dụng trên android thiết bị

Tôi thường đăng ký gói dữ liệu 1Gb của mobifone, và như vậy tôi có thể cảm thấy đầy đủ dung lượng để mình lướt web, nghe nhạc, đọc báo.... tuy nhiên cũng có khi quá tay, tôi lại dùng quá 1Gb này, và thế là mất hết tiền trong tài khoản, thay vì có thể đăng ký được nhiều Gb như thế nữa.
Thế là tôi phải tìm cách hạn chế, để khi quá 1Gb này thì không dùng mạng dữ liệu nữa, hoặc đăng ký thêm 1GB nữa mà không dùng lạm tiền.
Dùng cho điện thoại android thôi, vì tôi dùng điện thoại android.
bạn vào Setting (cài đặt),
phần connection (kết nối dữ liệu),
phần Data counter (bộ đếm dữ liệu),
chọn bật phần Set mobile data limit (thiết lập giới hạn sử dụng dữ liệu)
phần data use cycle (chu kỳ sử dụng dữ liệu) phần này là tính 1 tháng, từ ngày thiết lập, nhưng tôi dùng trong ngày, cho nên khi đăng ký ngày hôm nay thì tôi bấm vào để change cycle (chuyển chu kỳ) về ngày hôm nay.
sau đó bạn nhìn xuống dưới có 2 thanh, một thanh để giới hạn mức cảnh báo, một thanh là thanh giới hạn không dùng được dữ liệu mạng nữa.
bạn nhìn xuống dưới nữa sẽ thấy có một báo cáo về phần dữ liệu đã sử dụng trong ngày. nếu đó là phần dữ liệu dùng trước khu đăng ký thì bạn cộng thêm vào, còn nếu bạn không chắc thì làm ơn trừ ra. Ví dụ bạn đăng ký gói 1Gb ngày, bạn chuyển về ngày hôm nay, mà thấy phía dưới có 240Mb đã dùng thì bạn cộng vào (1024Mb + 240Mb= 1260Mb) rồi lần lượt nhấn vào các thanh giới hạn để chỉnh cho đúng.
bạn chỉnh thanh cảnh báo trước để nó nhỏ hơn 1260Mb, còn thanh giới hạn tắt dữ liệu thì chỉnh là 1260MB
thế là xong, bạn cứ dùng thôi mà không lo mình dùng vượt vào số tiền chưa đăng ký.